-g 使用该参数编译可执行文件,得到调试表
gdb a.out
list 1 列出源码,根据源码指定行号设置断点
b: b 20 在20行设置断点
run/r: 运行程序
n/next: 执行下一条指令(会越过函数)
s/step: 执行下一条执行(会进入函数)
p/print: p i 查看变量的值
c/continue: 继续执行断点后续命令。
quit: 退出gdb当前调试
其他指令
gdb 查看段错误的问题
gdb 执行后,直接run,退出的地方就是段错误的地方
run: 使用run 查找段错误出现位置。
start: 默认从程序第一行开始执行。
finish: 结束当前函数调用
continue: 继续后面指令
set args: 设置main函数命令行参数
run 字符串1 字符串2 ..: 设置main函数命令行参数
info b: 查询断点信息表
b 20 if i=5: 设置条件断点(一般利用循环,递归)
ptype : 查看变量类型
栈帧: 随着函数调用而在stack上开辟的一片内存空间,用于存放函数调用时产生的局部变量和临时值。
栈帧和函数调用一一对应
bt : 列出当前程序正存活着的栈帧。
frame: 根据栈帧编号,切换栈帧
display : 设置跟踪变量 (然后执行n 就可以查看跟踪值)
undisplay num 取消设置跟踪变量。使用跟踪变量的编号。
delete 删除断点。
错误
LC_PAPER=zh_CN.UTF-8 XDG_VINR=7