文章目录
- 基本用法
- 查看汇编代码
- Text User Interface(TUI)
- refernece
 
 
欢迎访问个人网络日志🌹🌹知行空间🌹🌹
GDB 是 GNU Debugger的缩写,是GNU软件系统中的标准调试器, 很多类UNIX系统都可以使用GDB,GDB主要用来调试C/C++编写的程序,也可以用来用来调试Pascal/FORTRAN/D等语言编写的程序。GDB最早由犹太裔美国人理查德·马修·斯托曼于1988年编写,后基于GNU GPL`协议公开发布。
基本用法
要使用GDB需要在编译c/c++程序时带上编译参数-g,如:
g++ -g foo.cpp -o foo
然后通过gdb命令来运行程序,如:
gdb [executable]
gdb命令可以直接运行程序,也可以调试程序,在运行程序时,可以通过run命令运行程序,在调试程序时,可以通过break设置断点,然后通过continue命令运行程序,当程序运行到断点处时,程序会自动停止。常用调试命令如下:
- run运行程序
- list查看源码信息
- break设置断点
- disable禁用断点,如- disable break_point1
- enable启用断点,如- enable break_point1
- delete删除断点等,如- delete breakpoint 1
- continue运行程序,直到遇到断点
- next运行下一行
- step进入函数内部
- finish/fin执行直到当前函数运行结束,如何有返回值会打印返回值
- backtrace查看调用栈
- info args查看参数
- info locals查看局部变量
- print打印变量值/寄存器值
- disassemble查看源代码相关的汇编代码
- quit退出- gdb
常用命令示例:
# 查看某个寄存器的值:
p $rdx# 设置某个寄存器的值
set $rdx = 0x10# 查看环境变量
show environment [KEY]查看汇编代码
- 直接输入命令disassemble
> disassemble
查看当前函数的汇编代码
- 查看特定地址的汇编代码
# x命令是用来查看内存地址的值,i命令是用来查看指令的
# > x/FMT ADDDRESS> x/i 0xaddress
- 查看特定源文件对应函数的汇编代码
disassemble /m 'source.cpp'::add
Text User Interface(TUI)
使用GDB的时候可以借助文本用户界面Text User Interface来提升代码调试的体验。使用TUI可以同时查看源码,汇编代码和控制调试指令输入。
- 可以通过以下指令启动gdb的TUI模式
> gdb -tui
- 使用layout next命令来启动TUI,同时展示汇编和源码窗口
> layout next
- 使用layout split命令来启动TUI,同时展示汇编和源码窗口
> layout split
- 使用layout regs命令来查看寄存器信息
> layout regs
- 使用layout asm命令来查看汇编代码
> layout asm
- 使用layout src命令来查看源代码
> layout src
窗口切换的快捷键:
- 只显示源代码窗口
Ctrl + X 1
- 打开汇编代码窗口
Ctrl + X 2
refernece
1.https://www.sourceware.org/gdb/documentation/