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: text file formats


On Wed, Apr 05, 2006 at 07:39:38PM -0400, Daniel Jacobowitz wrote:
> On Wed, Apr 05, 2006 at 06:31:22PM -0400, Bob Rossi wrote:
> > One thing I have determined, is that in order to know what the file
> > format is, the entire text file needs to be parsed. After that, either
> > the file format is defined (unix/dos/mac) or it is undefined (mix of
> > them).
> > 
> > I would like to make sure that the algorithm CGDB uses to determine
> > the line number from a file is the same algorithm that GDB uses. Can
> > anyone point me in the correct direction?
> 
> GDB does something much simpler.  It opens the file in text mode and
> lets the C library sort it out.
> 
> Well, usually.  In search and reverse search it sometimes uses a
> similar but slightly simpler algorithm: ignore '\r' if followed by
> '\n'.  I'm not sure why those are done in binary mode.

OK, so now I'm confused. If the user looks at the text file through my
viewer, and set's a breakpoint at line 100, how can I be sure it's the
same 100 that GDB will actually set a breakpoint at? Obviously this
works for unix and dos file formats. But from the algorithm you stated
above, it doesn't look like GDB will work with mac file formats.

I mean, the C library on unix won't be able to read a file that was
created on a mac (at least with the mac file format).

Is GDB responsible for mapping the file line numbers to the actual lines?
or is this the responsibility of GCC via the debug info? For instance,
if foo () is defined at line 100 according to gcc and 101 according to
GDB, does CGDB have to think foo () is at line 100 or 101?

Thanks,
Bob Rossi


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