当前位置: 首页 > ops >正文

MDK程序调试

1.图标认识

第 1 个图标是复位调试。

第 2 个图标是全速运行。

第 3 个图标是进入全速运行状态后,通过这个图标可以停止全速运行。

第 4 个图标是 Step(Step one line),单步调试,每次点击运行一行代码,所以只要有子函数就会

进入。

第 5 个图标是 Step Over(Step over the current line),每次点击以函数为单位运行,不会进入函

数内部。

第 6 个图标是 Step out(Step out of the current line),点击后退出当前运行的函数,执行下一个

函数。

第 7 个图标是 Run to Cursor Line(Run to the current cursor line),直接运行到用户设置的行,

设置方法比较简单,用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头

然后点击此图标即可,可以看到前面多了一个黄色的小箭头,说明已经运行到此行

2.外设寄存器的查看

要查看的外设寄存器内容在这个菜单里面:

如果要查看内核外设寄存器,在这里:

3.全局变量的查看

针对全局变量,MDK 专门提供了 Watch1 和 Watch2 两个窗口,每个窗口可以添加很多变量。调试

过程中,这些窗口里面添加的变量是会更新的

也可以从菜单 View ->Watch Windows 进行添加

4.局部变量的查看

针对局部变量,MDK 专门提供了一个栈窗口,用于查看函数中各种局部变量,这个不需要用户添加,

MDK 会自动添加。

也可以从菜单 View ->Call Stack Window 进行添加。局部变量需要进入到那个函数里面才可以查看,这

点要特别注意,因为局部变量是来自栈空间的,进入函数申请占空间,退出函数后,栈空间就会被释放掉。

比如 main 函数里面一个 POS局部变量:

5.Flash 区或者 RAM 区的查看

如果要查看 Flash 区或者 RAM 区的内容,MDK 提供了 4 个 Memory 窗口

也可以从菜单 View ->Memory Windows 进行添加。比如要查看 0x0800 0000 地址开始的内容,直接

输入即可,这个地址是 STM32F4 的 Flash 首地址:

6.断点调试

断点调试比较重要,进入调整状态后,如果大家想让程序在指定的位置停止运行,可以添加断点,通

过这个小红点来添加

比如想在 88行添加断点。

点击那个小红点,可以看到已经添加上:

然后点击全速运行,如果程序有执行到这个地方,就会停在这里。可以看到黄色小箭头也显示在左侧了,

说明程序执行这个地方了

正常情况下,断点可以加到任何程序代码可以执行到的地方。另外注意,退出调试前,点击这个按钮取消

所有断点,防止 MDK 调试期间崩溃:

7.寄存器,全局变量和局部变量的动态更新

MDK 有个周期性更新选项,如果大家要周期性的观察一些寄存器、全局变量的更新、需要把菜单 View

-> Periodic Window Update 选上

注:学习来源安富莱BSP开发手册

http://www.xdnf.cn/news/12138.html

相关文章:

  • 指针的使用——基本数据类型、数组、结构体
  • 持续热点!持久性有机污染物(POPs)研究思路
  • 【Go】3、Go语言进阶与依赖管理
  • 电商实践 基于token防止订单重复创建
  • SuperMap Iserver 重置密码
  • 电路图识图基础知识-自耦变压器降压启动电动机控制电路(十六)
  • ProfiNet 分布式 IO 在某污水处理厂的应用
  • vue:当前对象添加对应值
  • VMware VCSA 9.0 Install
  • AWS 亚马逊 S3存储桶直传 前端demo 复制即可使用
  • DBSyncer:开源数据库同步利器,MySQL/Oracle/ES/SqlServer/PG/
  • 互联网大厂Java求职面试:AI与大模型技术在企业知识库中的深度应用
  • RocketMQ 5.0 可观测能力升级:Metrics 指标分析
  • 拷贝构造函数
  • Maven​​ 和 ​​Gradle​​ 依赖管理的详细说明及示例,涵盖核心概念、配置方法、常见问题解决和工具对比。
  • 最小硬件系统概念及其组成
  • 安卓后台常驻读取NFC
  • 知识蒸馏:从模型输出到深层理解
  • 论文笔记——相干体技术在裂缝预测中的应用研究
  • kafka入门学习
  • 蓝桥杯2118 排列字母
  • 10_聚类
  • llm-d:面向Kubernetes的高性能分布式LLM推理框架
  • react私有样式处理
  • Nuxt.js 入门总结教程
  • 汇编语言综合程序设计:子程序、分支与循环深度解析
  • 灾难恢复演练:数据库备份与恢复的全流程实践
  • [测试_10] Selenium IDE | cssSelector | XPath | 操作测试
  • 9.axios底层原理,和promise的对比(2)
  • BLOB 是用来存“二进制大文件”的字段类型