当在程序开发过程中,调试某个宏是否已定义,跟踪具体定义在哪个文件中?比如代码中有这么一段
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之前。