本文已参与「新人创作礼」活动,一起开启掘金创作之路。
学习资料
gdb 使用
可能需要安装 gdb。可以 使用 Tab 命令或变量自动补齐!
-
启动 gdb
gdb file 可执行文件或
gdb 可执行文件 -
运行程序 r
run 或简写 r -
退出 gdb
quit 或简写 q -
打断点 b
break 函数名 或简写 b 函数名 break 文件名:行号 或简写 b 文件名:行号 -
正则打断点 rb
rbreak regex 符合正则表达式的函数开头都会被打上断点 -
条件断点
break [文件名:]行号 条件 如:b 55 if a > 3 如果 a > 3 ,则在当前文件第 55 行断点 -
显示所有断点 i b
info breakpoints 或简写 i b -
删除断点 d
删除所有断点:delete 或简写 d 删除指定断点:delete 断点序号(可通过 i b 查看到),或简写 d 断点序号 -
显示接下来要执行的代码 l
list 或简写 l 如果显示不够长,可继续按 l -
下一步,不进入函数 n
next 或简写 n -
下一步,进入函数 s
step 或简写 s -
打印变量值 p
print 变量或函数或数组或元素等,print 可简写为 p 举例: print main # 打印main函数地址信息 p array # 打印数组 p array[3] # 打印元素 -
观察变量值变化
watch 变量名,如果变量值发生变化则断点自动到此位置,并打印变量前后的值。如下: Hardware watchpoint 2: total_passed │ │ Old value = 0 │ New value = 3 │ TestEnumLayers (total=@0x7fffffffdcbc: 3, passed=@0x7fffffffdcb8: 3, skipped=@0x7fffffffdcb4: 0, failed=@0x7fffffffdcb0: 0) at /home/kali/OpenXR-S│ DK-Source/src/tests/loader_test/loader_test.cpp:320 │ 320 failed += local_failed; -
查看寄存器 i r
info register 或简写 i r