xtensa-esp-elf-gdb build/blink.elf -x gdninit
- 启动 gdb
可以看到在
gdbinit
文件中设置在app_main
处的硬件断点已经起了作用。
此处打印出了断点处的代码和断点信息。
list
简化命令:
l
- 打印处断点附近的代码。
break N
简化命令:
b N
- 增加断点在代码中的 N 行。
打印出代码,在 99 行处添加断点。
info break N
简化命令:
info b N
- 查看当前断点信息。
断点信息:
Num:
当前断点的序列号。Type:
断点类型。Disp:
触发断点之后,断点是否继续保持。Enb:
Enable / Disable,断点 有效 / 无效。Address:
断点地址。What:
断点的详细信息。
- 用
info
命令还可以看到断点被触发了多少次
这里可以看到断点目前为止一共被触发了 6 次。
continue
简化命令:
c
继续运行。
代码的运行停止在了99 行的 blink_led()
处。
disable N
- 用
disable
加断点序列号可以不启用某个断点。
可以看到此处断点已不再启用。
此时继续程序运行,可以看到 LED 正常闪烁。
此时可以用
Ctrl-c
中断代码运行,调试程序会停止在任意代码处。
enable N
- 启用某个断点。
delete N
简化命令:
d N
- 删除某个断点。如果不后缀任何数字,则意味着删除所有断点。
break filename:N
简化命令:
b fiilename:N
- 在某文件某行打断点。
例如break blink_example_main.c:99
。
即在此文件 99 行 打断点。
break func
简化命令:
b func
- 在某函数出打断点。
用函数名来断点时,断点会停留在函数的第一行。
tbreak N/func
简化命令:
tb N/func
- 设置临时断点,断点在触发后就会被删除。