欢迎访问个人网络日志🌹🌹知行空间🌹🌹
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_point1enable启用断点,如enable break_point1delete删除断点等,如delete breakpoint 1continue运行程序,直到遇到断点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
1292

被折叠的 条评论
为什么被折叠?



