gdb调试

发布于 2022-02-15  3 次阅读


在终端写程序,总不能天天用printf来看自己的program有没有跑对吧,所以,我们有了gdb能在终端进行debug。那么gdb要怎么使用呢?

gdb debugging

在进行gdb教学之前,首先要确认自己有没有安装gdb。对于Ubuntu类linux运行sudo apt install gdb进行安装,对于Centos类linux运行yum install gdb进行安装。
在安装完成后可以通过gdb -version查看安装版本以及是否成功安装。

安装完成后可以正式开始用gdb对自己的程序进行调试啦

调试

  1. 首先,确认好自己已经用gcc或者其他编译工具编译好了自己的代码且带有debug调试信息(例如用gcc编译的话为gcc -g)。
  2. 假设我的可执行程序名字为a.out且在当前目录下, 那么我们可以通过 gdb ./a.out来对我们的程序进行调试。假如我们有core文件,我们执行gdb ./a.out corefilename(一般出错会生成core文件,通过这种方式我们可以快速找到出错行的代码)。我们也可以执行gdb -p 程序进程号对正在运行的程序进行调试。
  3. 可以通过b或者break加上函数名称或者数字,给函数或者第数字行加上断点。如果不知道要调试的地方为哪一行,可以通过 list或者list n n为数字,来查看代码
  4. 在添加好断点以后我们可以执行run或者r来运行程序
  5. 可以通过 next或者n 运行至下一行
  6. 也可以通过 continue或者c运行至下一断点
  7. 可以通过 info来查看信息,例如info breakinfo b可以查看在哪里打了断点
  8. 可以通过 print或者p 加 变量 查看当前变量,也可以加 (&加变量名)查看其地址
  9. 可以通过 display 加 变量名字使其在每次执行gdb指令都会显示值
  10. 可以通过 step 进入当前运行函数进行调试
  11. 可以通过 shell 加shell指令,在gdb内部执行shell操作
  12. 可以通过 set logging on 记录debug操作,并输出至gdb.txt (只会记录开启以后的操作)
  13. 可以通过 wathpoint 加 变量地址 来观察变量的变化(当变量变化时,gdb会有输出)
  14. 可以通过 quit 退出gdb程序

浊酒情殇逝,失心狂傲往。 无情者伤人,有情者自伤。