问题:
使用gcc编译gdb调试.c文件,比如编译调试hello.c文件,使用的命令是:
gcc -g hello.c -o hello
分析:
乍一看没啥问题,确实没啥问题,如果你不需要调试宏定义的话。但是如果想要gdb跟踪调试宏的时候((gdb) p XXX
),这就会出问题了,会出现提示:
No symbol “XXX” in current context(其中XXX指的是宏)。
所以这个时候就需要解决gdb不能查看调试宏的问题。
解决方案:
编译器默认没有把宏定义扩展信息编译进二进制文件(可以通过man gcc命令查看说明)。**编译时添加-gdwaf-2和-g3这两个参数就可以查看调试宏了。**加了-g3这个参数,gcc编译的时候,会将扩展的debug信息编译进二进制文件里面,包括宏定义信息。
结合上面问题中提到的例子,指令写成:
gcc -g -g3 -gdwarf-2 hello.c -o hello
这样问题就解决了。