常见的Debug方法
原文链接:MDK5 Debug调试方法总结_keil5debug调试_小z不会累~的博客-CSDN博客
连接好硬件DAP之后,需要进行一些设置
开始仿真调试
Debug调试按钮分别对应的功能
- 按钮1->reset复位按钮
- 按钮2->run按钮,程序运行按钮
- 按钮3->stop按钮,程序停止运行
- 按钮4->步进按钮,指步进函数内部运行
- 按钮5->步过按钮,步过函数执行,并不是不执行当前函数,而是直接执行完当前函数,直接指向下一条指令。
- 按钮6->步出按钮,若是程序正在函数内部执行,点击此按钮,直接跳出函数,指向下一条指令。
- 按钮7->运行至当前行,图中黄色表指的是程序运行的当前位置,蓝色标指的是光标指向的那一行指令,点击按钮7可以将程序运行值蓝色箭头指向的位置。
- 按钮8->指示程序当前的停止位置,点击黄色按钮,可以跳转到程序运行的停止位置。
断点:顾名思义就是用来设置程序停止的地方
- 按钮1->设置断点
- 按钮2->取消断点
- 按钮3->使能/失能断点
- 按钮4->删除所有断点
- 窗口1->命令窗口,可以输入一些调试相关的指令,一般不怎么使用。
- 窗口2->反汇编窗口,可以查看当前行代码反汇编之后的代码,不常用
- 窗口3->标志窗口,展示程序中使用的一些变量类型,不常用
- 窗口4->寄存器窗口,用来指示CPU的工作状态
- 窗口5->调用栈以及函数所在位置的窗口,我们的函数就是不断被压入栈里的,可以利用窗口5查询每步程序运行,栈压入操作,同时也可以通过这个窗口查看各个函数所使用的一些成员变量,非常好用,这是我们在调试过程中经常使用到的一个窗口
- 窗口6->watch监控窗口,可以添加一些想要监视的变量,这个也是经常会使用到的一个窗口,使用方式:1、直接将变量拖拽到监控窗口中,另一种是点击变量右键Add to watch1/watch2
- 窗口7->memory窗口,它是用来监控内存的,可以用它来查看内存存储数据的变化
- 窗口8->串口窗口,功能类似于一个虚拟的调试助手,需要特殊的仿真器支持,不常用
- 窗口9->逻辑分析仪,系统分析仪,也是需要特殊的仿真器支持,不常用
- 窗口10->Trace Exceptions窗口,同样是需要特殊的仿真器支持,不常用
- 窗口11->调试中最常使用到的窗口,对应着CPU的外设以及片上外设寄存器的查看窗口
这里插入一个问题,窗口11(System Viewer)无法使用的情况
如果对应寄存器的位没有动态跟随程序运行的话
当观察外设现象不符合预期的时候,而这个时候又排查不出错误的时候,可以通过监控对应外设所对应寄存器的状态,来排查原因,这在实际Debug调试中是经常用到的