GDB调试手册,一文就够

一、GDB介绍

GDB是:UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。

二、功能

一般来说,GDB主要帮助你完成下面四个方面的功能:

1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式

3、当程序被停住时,可以检查此时你的程序中所发生的事。

4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。

三、使用手册

使用GDB调试程序,有以下两点需要注意:

1. 要使用GDB调试某个程序,该程序编译时必须加上编译选项 -g,否则该程序是不包含调试信息的;

2. GCC编译器支持 -O 和 -g 一起参与编译。

1. GDB调试主要有三种方式:

  1. 直接调试目标程序:gdb ./hello_server
  2. 附加进程id:gdb attach pid
  3. 调试core文件:gdb filename corename

2. 退出GDB

  • 可以用命令:q(quit的缩写)或者 Ctr + d 退出GDB。
  • 如果GDB attach某个进程,退出GDB之前要用命令 detach 解除附加进程。

3. 常用命令

常用命令通常使用命令缩写即可。

命令名称 命令缩写 命令说明
run r 运行一个待调试的程序
continue c 让暂停的程序继续运行
next n 运行到下一行
step s 单步执行,遇到函数会进入
until u 运行到指定行停下来
finish fi 结束当前调用函数,回到上一层调用函数处
return return 结束当前调用函数并返回指定值,到上一层函数调用处
jump j 将当前程序执行流跳转到指定行或地址
print p 打印变量或寄存器值
backtrace bt 查看当前线程的调用堆栈
frame f 切换到当前调用线程的指定堆栈
thread thread 切换到指定线程
break b 添加断点
tbreak tb 添加临时断点
delete d 删除断点
enable enable 启用某个断点
disable disable 禁用某个断点
watch watch 监视某一个变量或内存地址的值是否发生变化
list l 显示源码
info i 查看断点 / 线程等信息
ptype ptype 查看变量类型
disassemble dis 查看汇编代码
set args set args 设置程序启动命令行参数
show args show args 查看设置的命令行参数

 4. 使用示例

 1. 使用gdb+程序名直接启动GDB调试

gdb test

2. 使用set args设置启动参数 因为启动参数为多个,所以是args

set args parameter1 parameter2 parameter3 ...

 

3. 使用b 命令打断点

b avformat_find_stream_info  (直接打函数名断点)

b 2440 (打当前文件指定行数断点)

b main (在main函数处设置一个断点)

b命令会自动寻找对应函数名,并且告知你在哪个文件多少行,进行设置断点 

4. 使用r 命令运行程序

r (程序将运行至断点处)

运行到第一个断点处 Breakpoint 1

5. 使用c 命令运行至下一个断点处

 Breakpoint 2, avformat_find_stream_info

6. 使用s以及n命令进行一步一步执行或执行到下一行

s


n

 

7. 使用quit退出GDB调试

(若GDB程序处于运行中,使用ctrl+C进行中断)

quit
 

程序被kill退出,输入y(yes)退出GDB调试! 

 

 至此就结束啦。

觉得有用记得点赞 收藏+关注。感谢感谢

猜你喜欢

转载自blog.csdn.net/Lemon_D1999/article/details/129532214
今日推荐