GDB命令实操记录

GDB 调试命令实操

  • GDB 命令使用-实操验证
    • 进入GDB
    • 调试程序
    • 查看信息
    • 断点操作
    • 变量操作
    • 其他命令

GDB 命令使用-实操验证

你好! 本篇文章汇总了GDB命令的基础使用,并通过实际操作对每个命令进行验证,通过自己的实操结果,并结合自己的理解,总结如下

进入GDB

gdb program 通过gdb+可执行文件进入,需要执行run命令运行程序
gdb program pid 通过gdb+可执行文件+pid(已经跑起来的进程号),通过pid号可以直接依附到程序中,而不需要再次执行run命令,也可以通过attact命令+pid号依附到进程中。
gdb -p pid gdb可以通过-p选项直接依附程序中
gdb program core core文件是程序崩溃时,系统将地址空间信息以及一些内存信息记录成文件,便于开发人员通过core文件分析程序崩溃原因,gdb支持通过core文件分析程序崩溃的原因。

调试程序

run: 运行程序,该命令支持添加参数,如run -h,-h就是参数。
set args: 设置启动参数,提前设置好运行参数,使用run命令时,就不需要再次输入参数
show args: 查看设置好的参数
continue(c): 继续运行程序到断点、或者程序结尾或者出现错误的位置
next(n): 单步执行代码,不会进入调用的函数
step(s): 单步执行代码,进入调用的函数
until+n: n:代码行数,该命令表示运行到代码第n行
finish: 一直运行到函数返回并打印函数返回时的堆栈地址以及函数的返回值及函数的参数值等信息

查看信息

backtrace/bt: 查看当前函数的调用栈,函数调用关系是从下到上以此调用,通过使用该命令,可以很清楚看到函数的执行过程,是很常用的命令。
frame+n: n:堆栈标,可以打印指定栈,查看该函数代码信息
info reg(i r): 查看寄存器信息
info strace(i s): 查看堆栈使用情况,和bt命令差不多
up/down: 查看堆栈中上一个或下一个函数信息

断点操作

break+n/finc: 在代码第n行(调用函数)添加断点,每次执行到该位置都会停止,需要手动删除断点
tbreak+n/func: 添加临时断点,运行到该断点后将自动删除该断点。
info breakpoint(i b): 查看断点信息
delete breakpoint /clear +n: 删除断点n(n为空时默认删除所有)
disable/enable N: N:断点编号,禁用或启用该断点
watch/rwatch +变量名: 操作变量时(写入,读出),程序被暂停,可以查看变量信息

变量操作

print(p)+参数名: 查看变量信息,如果在一个函数中,局部变量和全局变量冲突,则显示局部变量的值。
display 表达式: 显示表达式(变量)的值,每次运行命令时,都会打印出该值,类似于追踪功能
info display: 查看追踪的表达式列表
disable/enable display n: n:编号,启用或禁用追踪该表达式
whatis+参数名: 查看变量类型
set 参数=值: 给变量赋值。如set a=3,则在程序中a被赋值为3

其他命令

signal: 给被调试程序发送信号
handle: 程序接收到信号时处理方法
shell: 回到shell下
exit: 回到gdb环境下
cd: 改变运行环境,与shell下cd命令一致
pwd: 查看当前运行环境,与shell下pwd命令一致

你可能感兴趣的:(GDB命令实操记录)