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