嵌入式老鸟们,不知道你是否有这样的经历,测试的设备运行一段时间,可能半个月、可能半年都没啥问题,突然它就死机或运行错误,这种时候想排查问题,除了看日志,恐怕就只有进入单步调试的模式看寄存器状态。
问题来了,进入调试时设备复位的经历你肯定有过,但在这里,复位就碍事了,怎么办?运行中的设备,能不能不产生复位且不破坏寄存器已有数据的情况下,进入调试?可以的。
如果你取消勾选下图中这几个选项,那么debugger启动时不会执行硬件复位:
-
Options For Target - Debug - Load Application at startup
-
Options For Target - Debug - Settings - Reset after connect (with Options For Target - Debug - Settings - Connect selected as NORMAL)
-
Options For Target - Utilities - Update Target before Debugging
因为Options For Target - Debug - Load Application at startup没有勾选,debugger没有任何应用程序和调试信息。可以新建一个load.ini文件,里面只要一句话:
LOAD %L INCREMENTAL
上面几步做完,点击调试按键,debugger启动,会在程序计数器当前运行到的位置停住。之后就可以分析内存数据了。【千万不要去点击下载按钮,不然功亏一篑,设备运行情况被破坏了】