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 can i show the macro infor


Hi JiangHe,

You may forget to use this gcc compile flags, "-gdwarf-2 -g3", at the compile time.
It works for Jim because he used the gcc compile flags.
gcc -gdwarf-2 -g3 x.c -o x

Reference gdb marco at http://www.delorie.com/gnu/docs/gdb/gdb_70.html

Sheng-Liang Song

Jim Blandy wrote:
"ææ" <empriser@gmail.com> writes:
I can't show the macro info by these operation.

gcc --version
gcc (GCC) 3.4.5 20051201 (Red Hat 3.4.5-2)

gdb --version
GNU gdb Red Hat Linux (6.3.0.0-1.96rh)

cat x.c
#include <stdio.h>
#define NEX 1
int main()
{
        printf( "%d\n", N );
        return 0;
}

gcc -gdwarf-2 -g3 x.c -o x
(gdb) l
1       #include <stdio.h>
2       #define NEX 1
3       int main()
4       {
5               printf( "%d\n", NEX );
6               return 0;
7       }
(gdb) info macro NEX
The symbol `NEX' has no definition as a C/C++ preprocessor macro
at x.c:8
  included at /usr/include/stdio.h:749

--
æèççæ

That response from GDB to your 'info macro NEX' command looks very strange. I'd wonder whether your GCC was producing bad macro information.

I wasn't able to reproduce this problem with Fedora Core 6's GCC 4.1.2:


$ cat x.c
#include <stdio.h>
#define NEX 1
int main()
{
printf( "%d\n", NEX );
return 0;
}
$ gcc -gdwarf-2 -g3 x.c -o x
$ ~/gdb/pub/nat/gdb/gdb x
GNU gdb 6.6.50.20070911-cvs
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) b main
Breakpoint 1 at 0x8048395: file x.c, line 5.
(gdb) run
Starting program: /home/jimb/play/x


Breakpoint 1, main () at x.c:5
5               printf( "%d\n", NEX );
(gdb) info macro NEX
Defined at /home/jimb/play/x.c:2
#define NEX 1
(gdb) print NEX
$1 = 1
(gdb) quit
The program is running.  Exit anyway? (y or n) y
$ gcc --version
gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-13)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$


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