This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How to portably print out Env of a Process


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]