这里以简单的求1到100数字和为例
1.给程序添加调试信息(gcc -g)
如果直接gcc生成可执行程序的话是没有调试信息的,无法进行调试 因为Linux中程序生成默认生成可执行程序为动态链接Release版本,不能进行调试
可以在 gcc后加 -g选项来生成Debug版本 如图,添加了调试信息后可执行程序明显变大
2.调试基本操作
开始调试 gdb+文件名
gdb拥有指令记忆功能,按回车默认执行上一次执行的命令
1.l(list)+n:从第n行开始显示代码,l表示继续显示代码
2.r(run)开始调试或重新调试(到断点位置)
3.n(next):下一行(逐过程,不会进去函数内)
4.s(step):下一行(逐语句,会进函数内)
5.until+n:直接跳转到第n行(如果第n行代码是无效的eg:空行或者是return等,则跳转到最近的一行有效代码上)、
6.finish:结束正在调试的函数
7.c(continue):跳转到下一个最近的断点处(下面没有断点就结束)
8.set var +变量:修改变量的值
9.bt:查看调用栈
断点
1.b+n:在第n行上打断点 b+函数名:给某个函数打断点
2.info+b:查看所有的断点信息
3.d+n:删除序号为n的断点(注意不是第n行的断点)
其中y表示断点是开启状态
4.disable+断点序号:(不删除断点)禁用断点 n表示断点禁用
5.enable+断点序号:重新启用断点
监视
1.p§+变量:查询此时变量的值 p§+&变量:查询变量的地址
2.display+(&)变量:将变量添加到监视列表(在变量生命周期中可以一直看到它的值)
3.undisplay+n:删除监视列表中序号为n的变量
|