贵有恒,坚持...
虽然做的是跨平台的业务,但平时大多数在windows下用vs进行程序开发,可视化的编程环境,觉得很方便,随心所欲,但在linux环境下开发的朋友告诉我其实命令行的GDB调试效率更高,更加灵活,惊愕之余也激起我学习的欲念。
用GDB调试C/C++的程序,首先在编译时,必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。
如:
> cc -g hello.c -o hello
> g++ -g hello.cpp -o hello
如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。当你用-g把调试信息加入之后,并成功编译目标代码以后。。
GDB调试命令:
1、启动GDB调试
gdb program program也就是你的执行文件,一般在当前目录下。
2、设置断点
break func
b func
break 文件名:行号
3、运行调试程序
run 或者 r
4、查看函数调用栈信息
n是一个正整数,表示只打印栈顶上n层的栈信息。
backtrace <-n>
bt <-n>
-n表一个负整数,表示只打印栈底下n层的栈信息。
5、退出GDB调试
quit 或者 q