From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9902 invoked by alias); 21 Sep 2007 16:23:30 -0000 Received: (qmail 9886 invoked by uid 22791); 21 Sep 2007 16:23:29 -0000 X-Spam-Check-By: sourceware.org Received: from mail.baymicrosystems.com (HELO mail.baymicrosystems.com) (65.174.40.133) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 21 Sep 2007 16:23:20 +0000 Received: from [192.168.1.201] (ssl-pc.baymicrosystems.com [192.168.1.201]) (authenticated bits=0) by mail.baymicrosystems.com (8.13.5/8.13.5) with ESMTP id l8LGNGwO013498; Fri, 21 Sep 2007 09:23:17 -0700 Message-ID: <46F3EE94.4080005@baymicrosystems.com> Date: Fri, 21 Sep 2007 22:21:00 -0000 From: Sheng-Liang Song User-Agent: Thunderbird 1.5.0.13 (Windows/20070809) MIME-Version: 1.0 To: =?UTF-8?B?5rGf5rKz?= CC: Jim Blandy , "news.gnu.gdb" Subject: Re: How can i show the macro infor References: <9875e6b70709210230m28c92c54s6b9348ac010c2452@mail.gmail.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2007-09/txt/msg00174.txt.bz2 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: > "江河" 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 >> #define NEX 1 >> int main() >> { >> printf( "%d\n", N ); >> return 0; >> } >> >> >>> gcc -gdwarf-2 -g3 x.c -o x >>> >> (gdb) l >> 1 #include >> 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 > #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 > 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. > > $ >