GDB Linux 下Linux程序调试器
只需掌握十几个命令就好
主要介绍了 流程,启动,查看变量的值,断点,查看代码,单步调试问题
cat(英文全拼:concatenate)linux命令用于连接文件并打印到标准输出设备上
就是打开.c文件然后把程序放到终端上
然后进行编译程序 命令 gcc test.c
生成可执行文件
下面在编译过程中引入调试信息
gcc test.c -g
不加-o 默认编译出来的名字a.out
启动后的界面
(利用gdb进行执行调试编译好的可执行文件)
之后就是开始执行可执行文件
输入 run
也可以输入简写字母r
输入quit退出gdb 也可以输入简写 q
如何进入gdb模式
在终端直接输入gdb 也可以进入gdb模式
**gdb filename
也可以用file filename来加载程序,**即表示
提示说明gdb成功读取了可执行文件test中的调试信息,已经准备好接受用户具体的调试命令了。
输入list命令或直接输入l来显示源代码
显示指定行前后的源代码内容
l+行号
如果你在执行了一部分的时候 输入l会显示
接下来要执行的代码
continue 程序继续执行 简写 c
break 断点 b 加行数 或者b 文件名: 行数
如果程序执行完毕需要用r来重新启动
run r 开始运行程序, 程序运行到断点的位置会停下来,如果没有遇到断点,程序一直运行下去。
单步调试指令 next
简写n
执行当前语句,如果该语句为函数调用则不会进入函数内部
step
执行当前行语句,如果该语句为函数调用,则进入函数执行其中的第一条语句。 注意了,如果函数是库函数或第三方提供的函数,用s也是进不去的,因为没有源代码,如果是您自定义的函数,只要有源码就可以进去。
如果想继续往下执行那就敲enter
它就继续往下执行下一行
这个也和Linux终端一样支持方向键上键重复之前输入过的指令
print p显示值
你要是想看某个变量的值就 p然后加变量名
如果想查询设置了几个断点可以用 info b
后面那个是简写
同样也可以查看寄存器的信息
如何删除断点
delete 删除所有的断点
删除特定的断点 delete 断点号
就上面你查询的那个序号