前段时间在Linux下面写程序,然后遇到不爽的一点就是调试极其麻烦,各种不爽,然后看见gdb调试(自己太孤陋寡闻了),这个调试工具好强大,唯一不爽的就是好多命令,真希望脑袋里面有个存储芯片。
笔记
对于需要调试的程序首先要执行的就是
g++ -g test.cpp -o test 注意-g不能缺少,因为这是保留编译信息
如果没有-g,就看不见程序的函数名,变量名,所代替的全是运行时的内存地址
然后调试的时候gdb test
break n 在第n行添加断点
info break 查看断点信息
delete num 断点的删除(注意此处num不是行号,通过info查看断点标号)
l 是列出代码
r 是运行
p i 答应出i的值
n 是执行下一句话
c 是继续执行,执行到下一处断点
bt 是查看函数栈的情况,可以通过这个来查看栈里面函数的情况
finish 执行完当前函数
q 退出调试,将程序执行结束
启动gdb 的几种方法
1. gdb <program>
program是可执行文件
2. gdb <program> core
用gdb同时调试一个运行程序和core文件,core 是程序非法执行后的文件
3. gdb <program> <PID>
如果程序是一个服务程序,那么就可以制定这个服务器运行时的进程ID,
gdb会自动attach上去,并调试他。