目录
1.背景知识补充
2.使用
知识补充
1.背景知识补充
1.gcc下编译默认是release方式发布的,无法直接进行调试
如果要以debug方式发布,需要携带-g
可以使用grep查询
因为携带debug信息,其文件体积要大一些
2.使用
1.gdb 可执行程序 进入调试,这里gdb后面跟的不是源代码,而是由源代码编译出来的可执行程序
2.q 退出调试
3. list(简写为l)行号:显示binFile源代码,接着上次的位置往下列,每次列10行。如果后面添加行号,它会将行号所在的语句放在显示出来的代码的较为中间部分,所有当我们l 0时,因为前面没有代码了,所有效果就等效于从第一行开始显示10行
4.list(简写为l) 函数名:列出某个函数的源代码。
5.run(简写为r):运行程序,会在下一个断点处停止运行。
6.next(简写为n):单条执行。逐过程
7.step(简写为s):逐语句,会进入函数调用
8.break(简写为b) 行号:在某一行设置断点,如果调了多个文件,可以使用b 文件名 行号 来给其它文件打断点
9.break(简写为b)函数名:在某个函数开头设置断点
10.info break(简写为 i b) :查看断点信息。
11.finish:执行到当前函数返回,然后停下来等待命令
12print(简写为p):打印表达式的值,通过表达式可以修改变量的值或者调用函数p 变量:打印变量值。
13.set var:修改变量的值,用法是set var i = 10 这样
14.continue(或c):从当前位置开始连续而非单步执行程序
15.run(或r):从开始连续而非单步执行程序
16.delete(简写d):删除所有断点
17.delete (简写d)断点编号:删除序号为n的断点
18.disable 断点编号:禁用断点
19.enable 断点编号:启用断点
20.info(或i) breakpoints:参看当前设置了哪些断点(效果和上面那个info break其实是一样的)
21.display 变量名:跟踪查看一个变量,每次停下来都显示它的值
22.undisplay:取消对先前设置的那些变量的跟踪
23.until X行号:跳至X行,如果所跳至的行号已经不在该函数内,那么使用until后程序会先执行到该函数返回然后停止
24.breaktrace(或bt):查看各级函数调用及参数
通过倒数的几行,我们可以看到我们从main函数中进入到了addtop函数中
25.info(i) locals:查看当前栈帧局部变量的值
知识补充
gdb会记忆上一次进行的操作,比如我使用 s,按回车键就会继续产生按s的效果,如果我们先输入了一个 l 0,继续按回车就会产生继续按l的效果