Linux下gdb编译调试程序
前言
本文记录调试工具gdb
的一些基础使用方式。gdb
是一个程序调试工具,注意,如果是程序语法报错,则在gcc
进行编译时自然有错误信息进行输出。gdb
需要先将程序文件编译为可执行文件成功之后才能使用。
一、调试前的准备
编译带有调试信息的可执行程序
gcc -g 源程序文件.c 程序文件1.c -o 可执行程序文件
使用gdb
调试器打开,进入调试器模式
gdb 可执行文件
注意进入调试模式,命令可以是缩写,也可以不缩写。
不缩写可读性比较高,但是在自己很熟悉调试模式的情况下,使用缩写比较快
查看源程序代码
在gdb
下
l(list)
l(list) 1#从第1行代码开始显示
l(list) 行号#显示第几行的代码
l(list) 函数名#显示某一个函数的代码,但是系统函数的代码不显示
#顺便切换文件,打断点时一定要注意在哪一个文件下
二、gdb中断点的使用
创建断点
b(break) 函数名
b(break) 行号
b(break) 文件名:行号
b(break) 行号if条件
b(break) add#表示在函数add出创建断点
b(break) 13 if x>3#如果x>3则在第13行下一个断点
b(break) add.cxx:3#表示在add.cxx的第三行下一个断点
查看断点
i(info) b(break)
删除断点
d(delete) 断点编号
d(delete) 3#表示删除3号断点
三、gdb中运行调试程序
直接运行程序
r(run)#运行调试程序
c(continue)#继续运行程序
q(quit)#退出
单步调试
n(next)#步过
s(step)#步进
f(finish)#步出
更加可视化的调试方式,可以边跟踪,边看全部代码
wi(winheight)
wi
这里也会有歧义,推荐使用全称,不使用缩写
四、gdb中打印值和监控值
打印值
p(print) 变量名
监控值,w
在某些时候有歧义,此时可以使用全写watch
w(watch) 变量名
总结
本文仅讲解了gdb
的基础使用方式,都是一些常用操作的命令,如有纰漏,还望指教!