How to portably print out Env of a Process

Daniel Jacobowitz drow@false.org
Wed Jul 12 16:39:00 GMT 2006


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



More information about the Gdb mailing list