How can i show the macro infor
Sheng-Liang Song
ssl@baymicrosystems.com
Fri Sep 21 22:21:00 GMT 2007
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.
>
> $
>
More information about the Gdb
mailing list