bug-gdb
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

impossible to debug preprocessed source files with gdb-5.3


From: Bruno Haible
Subject: impossible to debug preprocessed source files with gdb-5.3
Date: Wed, 18 Dec 2002 14:16:36 +0100 (CET)

Here is a problem that makes it impossible to debug preprocessed source files.

Take this file:
============================== spvw.d ==============================
#include <stdio.h>
#define GREETING "Hello, world.\n"
int main ()
{
  printf(GREETING);
  return 0;
}
====================================================================

Process it with a preprocessor, such as clisp's "comment5", this gives:

============================== spvw.c ==============================
#line 1 "spvw.d"
#include <stdio.h>
#define GREETING "Hello, world.\n"
int main ()
{
  printf(GREETING);
  return 0;
}
====================================================================

Compile this with gcc-3.2.1 on Linux/x86:

$ gcc -gdwarf-2 -g3 spvw.c

Now debug it:

$ gdb a.out 
GNU gdb 5.3
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) break main
Breakpoint 1 at 0x804834c: file spvw.d, line 5.
(gdb) run
Starting program: /tmp/a.out 

Breakpoint 1, main () at spvw.d:5
5         printf(GREETING);
(gdb) print 0
../../gdb/macroscope.c:48: gdb-internal-error: 
the symtab `spvw.d' refers to a preprocessor macro table which doesn't
have any record of processing a file by that name.

An internal GDB error was detected.  This may make further
debugging unreliable.  Quit this debugging session? (y or n) 

Under the debugger I can see that at macroscope.c:48
*sal.symtab.macro_table.main_source contains the filenames
"/tmp/spvw.c", "/usr/include/stdio.h", etc. but no "spvw.d".

Since spvw.c was generated from spvw.d, and contains the correct #line
statement, one should expect to see spvw.d in this list.

Bruno



reply via email to

[Prev in Thread] Current Thread [Next in Thread]