[prog] Re: [Techtalk] GDB and C question

Mary mary-linuxchix at puzzling.org
Wed Oct 23 17:34:44 EST 2002


Hi Brian,

LinuxChix has a programming list now, so I'm passing your techtalk
message onto them.

Programmers, Cc Brian if you reply, as he may well not be subscribed.

On Wed, Oct 23, 2002, bsweeney at physics.ucsb.edu wrote:
> Hey all you C gurus-
> 
> I, being a miserable programmer, am stuck debugging a problem with a
> rather old piece of in-house software written in C.  It's segfaulting
> to be precise, with (shocker) no good error messages being generated.
> I've run the program through gdb, and from what I can see from the
> stack trace it looks like the segfault's happening when it tries to
> open a file.  Makes sense; the error gdb originally reported was a no
> such file or directory error in some low-level library.  I have
> narrowed the function call down generating the error, and it's a
> fprintf statement with a file and a bunch of strings as characters. My
> question is, if I know the name of the file pointer (in this case
> parm_fp), is it possible to get the name of the file associated with
> that pointer?  I know that gdb will let me print out the value of
> variables; I've already had it print out integer variables with great
> success.  But of course when I say:
> 
>   gdb> p parm_fp
> 
> I get a memory address back.  Using p/a gave the same results.  I'm
> not terribly familiar with gdb, so I'm not sure what else to try.  
> 
> Any way to get the filename from the pointer or address?  I realize
> the best way would probably be to go through the source code and find
> the original fopen command for the file in question, but the code is
> massive and hard to follow.   Any advice would be appreciated.
> Unfortunately, it's part of our financial software and (shock again)
> the finance stuff needs to get generated by the end of the week.
> *sigh*, why doesn't anyone ever find problems when they DON'T matter?
> 
> Thanks in advance, Brian



More information about the Programming mailing list