在 GDB 调试过程中,设置断点并在断点处停下来后,你可以执行一系列操作来检查、修改程序的状态,或继续调试。以下是一些常用操作指令:
查看变量和内存
- 
查看当前栈帧的局部变量:
info locals - 
查看特定变量的值:
print variable_name - 
查看特定内存地址的值:
x /nfu addressn:显示的单元数f:格式(如d表示十进制,x表示十六进制)u:单位(如b表示字节,w表示字)
 
修改变量和内存
- 
修改变量的值:
set variable_name = new_value - 
修改内存的值:
set {type} address = new_value例如,修改一个
int类型的值:set {int} 0x7fffffffe1b0 = 10 
堆栈操作
- 
查看当前堆栈帧信息:
info frame - 
查看调用栈:
backtrace或者简写:
bt - 
切换到某个特定的栈帧:
frame frame_number - 
查看特定栈帧的局部变量:
info locals 
设置和管理断点
- 
设置断点:
break function_name或者在特定行号设置断点:
break filename:line_number - 
列出所有断点:
info breakpoints - 
启用/禁用断点:
enable breakpoint_number disable breakpoint_number - 
删除断点:
delete breakpoint_number 
继续执行
- 
继续执行程序:
continue或者简写:
c - 
单步执行程序(逐行执行):
step或者简写:
s - 
单步执行,不进入函数调用(逐过程执行):
next或者简写:
n 
条件断点
- 为断点设置条件:
condition breakpoint_number condition_expression 
程序运行状态检查
- 检查程序是否已结束:
info program 
堆栈回溯与变量观察
- 
获取程序的执行历史:
info registers - 
查看指定寄存器的值:
print $register_name