gdb 调试工具
常用命令
- g: 使用该参数编译可以得带可执行文件,得到调试表。
- list 100: 从第100行开始显示代码
- list或者l: 显示代码
- b 52: 在52行设置一个断点
- b 20 if i = 2:设置条件断点。一般用于循环中
- info b: 查看gdb调试表中的所有断点
- run或者r:执行程序,遇到断点停止
- n: 执行下一步,如果当前行是函数,不进入函数
- s: 执行下一步,如果当前行是函数,进入函数。如果该函数是系统函数,可能找不到这个系统函数进入,退出的方法是:until 16, 16行代码是调用系统函数这样代码之后的代码。
- p i(print i):查看变量i的值。
- ptype i: 查看i的变量类型
- continue:到下一个断点继续执行。
- quit:退出当前调试
- start:不需要设置断点,直接从第一行执行
- finish: 跳出当前的函数。也就是结束当前函数调用。
- set args aa bb cc: 设置main参数列表。应该在start命令之前执行,或者在断点模式下可以改为
run aa bb cc
- bt(backtrace): 列出当前程序正在存活的栈帧
- frame 1: 切换栈帧
- display i:每次执行都显示i值,取消方法是undisplay <跟踪变量i的编号>。
栈帧
栈帧:随着函数调用而在 stack 上开辟的一片内存空间。用于存放函数调用时产生的局部变量和临时值。