gdb是GUN发布的一款功能强大的程序调试工具,主要完成三方面功能:
1、启动被调试的程序
2、让被调试的程序在指定的位置挺停住
3、当程序被停住时,可以检查程序状态-变量值
学习GDB的三步走
1、学会使用GDB(基础命令)
2、掌握GDB的场景的使用技巧(多任务、网络程序、内存管理、core、汇编程序)
3、实现GDB(实现一个调试器:应用程序)
做法
首先,写一个可执行的gdb-gemo.c文件,输入命令(一定要加-g,其意义是生成一些调式信息)
gdb+可执行文件
在(gdb)后面输入run,运行程序。
break+行数 设置断点(在第几行停下来)再输入print+变量,可以显示当时变量的值。
退出:quit
图形化带界面的gdb,输入命令:gdb gdb-gemo --tui
再敲一下回车,屏幕上会出现原码。
break+行数 设置断点
(如果需要跳过断点继续运行,输入命令:continue
查看断点信息:info break 第一个数字是断点编号
删除断点:delete+断点编号 )
next可以缩写成n 下一步
显示汇编:layout asm
显示原码:layout src
分层,上面显示原码,下面显示汇编:layout split
查看断点信息
在调用函数的时候停下来:break+函数名
break+行号+条件
关闭断点,但是并没有删:disable + 断点编号
恢复:enable+断点编号
step和next都是单步执行
总结
gdb命令
run:在调试器中运行程序
list:查看程序原码
break+行号:设置断点
break+行号+if条件:设置断点
break+函数名:设置断点
info break:查看断点信息
delete+断点编号:删除断点
enaslbe/disable:使能断点
print+/x 变量名:查看变量值(/x就是什么类型的)
next:单步执行,不进入子函数
step:单步执行,进入子函数
continue:继续执行,直到遇到下个断点
finish:继续执行,在函数内部时,执行到函数结束
call + 函数:调用函数
print+变量=值 :设置变量的值
clear:清楚所有断点
ptype+变量:查看变量的类型
gdb+可执行文件+ --tui :启动图形化调试窗口
layout asm:显示汇编
layout src:显示源代码
ayout split:显示源代码+汇编程序