GDBStub 调试
你可以在 Eclipse 插件中使用 GDBStub 调试功能,在芯片进入 panic 模式时诊断和调试相关问题。
可参照下列步骤为项目启用 GDBStub 调试:
在项目根目录中双击
sdkconfig,打开配置编辑器。
展开
Component Config部分并选择ESP System Settings。在右侧设置中,将Panic handler behaviour设为列表中的GDBStub on Panic选项。
当连接串口监视器且此示例发生 panic 时,将自动进入 GDBStub 调试器。
参照下列步骤在项目中使用 GDBStub 调试:
创建
hello_world模板项目,并在main.c文件中加入以下内容:// 这是一个全局变量 COREDUMP_DRAM_ATTR uint8_t global_var;
现在在
esp_restart()函数的上方加入下面两行代码:global_var = 25; assert(0);
最终生成的文件应如下所示:
构建并烧录项目,然后启动串口监视器。在第 45 行,会触发一个失败的断言,导致芯片进入 panic 模式。当程序执行到该行时,IDE 会提示你切换到调试模式,并暂停芯片执行。
此时芯片处于 panic 模式,无法继续执行程序。必须通过 IDF 命令停止并重启芯片,或者直接重启串口监视器。
你可以查看寄存器、栈回溯以及栈帧中的变量值。
若要退出调试会话,只需点击 stop 按钮。