gdb调试工具
学习目的:
掌握gdb调试工具指令
基础指令:
gdb调试器:gbd调试器由GNU项目开发针对C/C++语言的代码调试工具。
基础指令如下:
命令 | 作用 | 命令 | 作用 |
---|---|---|---|
-g | -使用该参数编译可执行文件,得到调试表 | gdb 可执行文件 | 打开调试工具 |
list | 列出源码 | b N | 在N行设置断点 |
run/r | 运行程序 | n/next | 下一条指令(会越过函数) |
s/step | 下一条指令(会进入函数) | p/print i | 查看变量i的值 |
s/step | 下一条指令(会进入函数) | p/print i | 查看变量i的值 |
continue | 继续执行断点后续指令 | quit | 退出gdb当前调试 |
finish | 结束当前函数调用 | set args | 设置main命令行参数 |
run 字符串1 字符串2 | 设置main函数命令函参数 | info b | 查看断点信息 |
b N if i = N | 设置条件断点 | ptype | 查看变量类型 |
bt | 列出当前程序正活着的栈帧 | frame | 根据栈帧编号,切换栈帧 |
display | 设置跟踪变量 | undisplay | 取消设置跟踪变量,使用跟踪变量的编号 |
补充:
栈帧:编译器用来实现过程/函数调用的数据结构,利用栈帧指针寄存器访问局部变量,参数、函数返回地址等的手段。栈帧一般包括如下:
- 函数的返回地址。
- 临时变量:函数的非静态局部变量和编译器自动生成的其他临时变量。
- 函数调用的上下文。