当在程序开发过程中,调试某个宏是否已定义,跟踪具体定义在哪个文件中?比如代码中有这么一段

file.c

#ifdef __C__

   int fun(int flag,char *pBuf)

。。。。

#else

   int fun(int flag,char *pBuf)

#endif

 

此时很有必要在调试时,打印下该宏,是否有定义。

gdb file

(gdb) info macro __C__
GDB has no preprocessor macro information for that code

好了提示这个主要是没找到宏的信息处理器。

使用如下方法:

在编译的时候加上-gdwarf-2 -g3

gcc -gdwarf-2 -g3  file.c o file -g

gdb -nw file

 此时就可以直接P __C__,如果有定义就会打印出来,如果未定义会提示

No symbol "__C__" in current context.


需要特别说明的在gcc编译时,把-gdwarf-2 -g3一定要加在gcc之后。-o之前。