目录
debug调试功能
基本功能:
程序复位:Reset
运行:Run
停止:Stop
断点调试(Breakpoint Debugging)
单步调试:
单步调试:Step
单步跳过调试:Step Over:
单步返回调试:Step Out
Window
Watch Window
Memory Window
System Viewer Windows
问题与排查
Keil5
Keil5采用了全新的图形化界面,使得用户能够更加方便地操作和管理工程。新的界面布局和导航方式非常直观和易于使用,使得用户能够更加快速地定位和解决问题。
其次,Keil5增强了对多核处理器的支持,能够更好地利用多核处理器的计算能力,提高编译和链接的速度。同时,Keil5还提供了新的代码优化技术,可以进一步提高生成的代码质量和执行效率。
另外,Keil5还增加了许多新特性和功能,例如支持CMSIS(Cortex Microcontroller Software Interface Standard)4.0,支持新的ARM Cortex-M7内核、增强的调试功能、更好的RTOS支持等等。
debug调试功能
注意:
debug需要用的在线仿真器,比如DAP烧录器等,同时需要插入单片机并通电
基本功能:
光标
黄色光标为软件运行位置,蓝色为鼠标点击位置
程序复位:Reset
重新启动你的目标设备或系统。在调试过程中,你可能需要重新开始运行程序或者恢复到某个状态,这时就需要用到“Reset”功能。
运行:Run
表示让程序从头开始连续运行直到结束。这个操作将使程序以正常的速度(不暂停)一直运行下去,除非遇到断点或者手动停止。
停止:Stop
表示立即停止程序的执行。当你正在调试程序时,可以通过点击“Stop”按钮来强制终止程序的执行,以便于分析结果或对程序进行其他操作。
断点调试(Breakpoint Debugging)
Keil允许开发人员设置断点,即在程序中指定位置停下来进行调试。断点可以是条件断点(满足特定条件时触发)、硬件断点(使用芯片内置的硬件断点)或软件断点(通过修改指令实现)。断点调试功能使得开发人员能够在关键位置观察变量的值、调用栈、函数调用关系等,从而更好地理解程序的执行过程。
断点是指你在源代码中设定的一个特殊位置,当程序运行到这个位置时,会自动暂停执行,以便你对程序进行详细的检查和调试。
断点只能打在深灰色处,浅灰色不能打,因为不算可执行语句,断点数量有限制不能打的过多
单步调试:
单步调试:Step
指让程序按照每条指令的方式依次执行。这种操作可以使你观察到程序运行过程中的细节,帮助你更好地理解代码的工作原理以及发现问题所在。
单步跳过调试:Step Over:
让程序执行完当前语句然后跳过子函数或过程调用,直接进入下一个语句的执行。
单步返回调试:Step Out
可以让你快速跳出当前的子函数或过程返回到主函数。
Window
Watch Window
一个用于监视变量和表达式的特殊窗口。它可以让你在程序运行过程中随时查看指定变量或表达式的值,这对于跟踪程序状态、诊断和解决问题来说是非常有用的。
你可以查看当前程序状态下指定变量或表达式的值,并且支持多种格式化输出,如十六进制、浮点数等
只有全局变量可以全程监视,临时变量只有在进入当前函数中才可监视到其数据
Memory Window
可以用来查看目标系统的内存状态。你可以通过 Memory Window 来查看 RAM 或 Flash 的存储空间以及其中的数据内容。
在Memory窗口中输入想要查看内存的起始地址
System Viewer Windows
一个可以用来查看各种外设寄存器状态的特殊窗口。通过 System Viewer Windows,你可以查看 MCU 内部的寄存器值和结构体等内容.
在 System Viewer Windows 中看到选定的外设寄存器值和结构体了。你可以通过单步调试等方式来跟踪程序的运行状态,从而找到可能存在的问题
补充:
-
断言(Assertion) 断言是一种在程序执行过程中检查某个条件是否成立的方法。在Keil5中,你可以使用断言来确保程序的某些特定条件得到满足。如果某个断言条件不成立,程序就会停止运行并输出错误信息,从而帮助你快速诊断问题。
-
跟踪(Trace) 跟踪是一种记录程序执行过程的方法,它可以帮助开发人员了解程序的运行情况、查找错误和优化代码。Keil5支持多种跟踪方式,包括 ETM(Embedded Trace Macrocell)跟踪和 ITM(Instrumentation Trace Macrocell)跟踪等。
-
自动化测试(Automated Testing) Keil5提供了自动化测试功能,可以帮助开发人员快速检测程序的正确性和稳定性。自动化测试可以通过编写测试脚本来实现,例如使用Python语言编写测试脚本进行单元测试、集成测试等。
-
历史记录(History) Keil5可以保存所有的编译历史记录,包括编译器选项、生成文件等。这使得开发人员可以追溯每个版本的代码变化情况,并且可以轻松地回滚到某个历史版本。
-
多平台支持(Multi-platform Support) Keil5不仅支持Windows平台,还支持Linux和macOS等多种操作系统平台。这使得开发人员可以在不同的平台上使用Keil5进行开发和调试,提高了工作效率。
-
定制化配置(Customizable Configuration) Keil5支持定制化配置,可以根据用户需求对编译器选项、链接器选项、调试器选项等进行配置。这使得开发人员可以针对不同的项目和需求进行优化,提高了代码质量和执行效率。
问题与排查
-
观察程序行为:在debug过程中,观察程序的行为是首要的步骤。通过单步执行、跳转等操作,了解程序执行的流程,观察是否存在意外的行为和错误。
-
断点调试:设置断点是一种常用的debug技术。通过在关键代码处设置断点,在程序执行时暂停并检查变量值和程序状态,可以帮助定位问题所在。
-
观察表达式和变量:Keil 5提供了观察表达式和变量的查看功能,可以实时监视变量的值和表达式的结果。通过观察表达式和变量,可以追踪它们的值随着程序执行而变化的情况,从而找到问题的根源。
-
内存窗口:内存窗口功能允许开发人员直接查看内存中的数据。通过查看内存中的数据,可以检查变量、数组、对象等的值,以及堆栈和堆的使用情况,帮助定位内存相关的问题。
-
寄存器查看:前面已经详细介绍了寄存器查看的重要性和使用方法。通过查看寄存器,可以了解处理器的状态和寄存器值的变化,帮助定位与寄存器相关的问题。
-
日志和错误消息:Keil 5会输出日志和错误消息,记录编译、连接和调试过程中的信息。仔细阅读这些日志和错误消息,可以发现潜在的问题和错误。