This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: How to portably print out Env of a Process
- From: Daniel Jacobowitz <drow at false dot org>
- To: gdb at sourceware dot org
- Date: Wed, 12 Jul 2006 12:39:10 -0400
- Subject: Re: How to portably print out Env of a Process
- References: <5f3d30900605222046t810dd4cue180cba7b0541fa7@mail.gmail.com> <200606171914.k5HJEJGY032428@elgar.sibelius.xs4all.nl>
On Sat, Jun 17, 2006 at 09:14:19PM +0200, Mark Kettenis wrote:
> Make sure you install libc with full debug info. It looks like you're
> using Linux. Debian has packages with the necessary debug info.
> Other distros might not. If your distro does not provide such
> packages please complain.
Actually, we (Debian) don't by default. The example was:
p (char *) getenv("HOME")
We ship two sets of debug libraries, both in the libc6-dbg package.
One set are used automatically by GDB (via set debug-file-directory);
these have only .debug_frame in them, and are used only for backtraces.
The other includes symbolic debug info and is not used unless you
specify LD_LIBRARY_PATH=/usr/lib/debug. They aren't the default
because GDB takes a large amount of RAM and is much slower when given
that much debug information, for an otherwise small program.
So, if you are running a program that includes the header defining
getenv, and your program is compiled with -g, the example will work.
And if you use the libc6-dbg libraries explicitly, the example will
work. Otherwise, GDB has to guess, and guesses wrong.
I wonder if guessing "long" for return values might be more overall
useful than guessing "int", for this exact reason? Is that likely to
break anything not already broken?
--
Daniel Jacobowitz
CodeSourcery