Keil5 debug

目录

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 中看到选定的外设寄存器值和结构体了。你可以通过单步调试等方式来跟踪程序的运行状态,从而找到可能存在的问题

 补充:

  1. 断言(Assertion) 断言是一种在程序执行过程中检查某个条件是否成立的方法。在Keil5中,你可以使用断言来确保程序的某些特定条件得到满足。如果某个断言条件不成立,程序就会停止运行并输出错误信息,从而帮助你快速诊断问题。

  2. 跟踪(Trace) 跟踪是一种记录程序执行过程的方法,它可以帮助开发人员了解程序的运行情况、查找错误和优化代码。Keil5支持多种跟踪方式,包括 ETM(Embedded Trace Macrocell)跟踪和 ITM(Instrumentation Trace Macrocell)跟踪等。

  3. 自动化测试(Automated Testing) Keil5提供了自动化测试功能,可以帮助开发人员快速检测程序的正确性和稳定性。自动化测试可以通过编写测试脚本来实现,例如使用Python语言编写测试脚本进行单元测试、集成测试等。

  4. 历史记录(History) Keil5可以保存所有的编译历史记录,包括编译器选项、生成文件等。这使得开发人员可以追溯每个版本的代码变化情况,并且可以轻松地回滚到某个历史版本。

  5. 多平台支持(Multi-platform Support) Keil5不仅支持Windows平台,还支持Linux和macOS等多种操作系统平台。这使得开发人员可以在不同的平台上使用Keil5进行开发和调试,提高了工作效率。

  6. 定制化配置(Customizable Configuration) Keil5支持定制化配置,可以根据用户需求对编译器选项、链接器选项、调试器选项等进行配置。这使得开发人员可以针对不同的项目和需求进行优化,提高了代码质量和执行效率。

问题与排查 

  1. 观察程序行为:在debug过程中,观察程序的行为是首要的步骤。通过单步执行、跳转等操作,了解程序执行的流程,观察是否存在意外的行为和错误。

  2. 断点调试:设置断点是一种常用的debug技术。通过在关键代码处设置断点,在程序执行时暂停并检查变量值和程序状态,可以帮助定位问题所在。

  3. 观察表达式和变量:Keil 5提供了观察表达式和变量的查看功能,可以实时监视变量的值和表达式的结果。通过观察表达式和变量,可以追踪它们的值随着程序执行而变化的情况,从而找到问题的根源。

  4. 内存窗口:内存窗口功能允许开发人员直接查看内存中的数据。通过查看内存中的数据,可以检查变量、数组、对象等的值,以及堆栈和堆的使用情况,帮助定位内存相关的问题。

  5. 寄存器查看:前面已经详细介绍了寄存器查看的重要性和使用方法。通过查看寄存器,可以了解处理器的状态和寄存器值的变化,帮助定位与寄存器相关的问题。

  6. 日志和错误消息:Keil 5会输出日志和错误消息,记录编译、连接和调试过程中的信息。仔细阅读这些日志和错误消息,可以发现潜在的问题和错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/198741.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue项目中使用jsonp跨域请求百度联想接口

一. 内容简介 vue项目中使用jsonp跨域请求百度联想接口 二. 软件环境 2.1 Visual Studio Code 1.75.0 2.2 chrome浏览器 2.3 node v18.14.0 三.主要流程 3.1 代码 核心代码 // 这个是请求函数doLeno() {// 挂载回调函数,不挂载,会报不存在window…

算法中的时间复杂度,空间复杂度

一、前言 算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别 衡量不同算法之间的优劣主要是通过时…

【动态规划】求最长递增子序列问题

目录 问题描述递推关系建立递推关系的思路约束条件:以 s [ k ] s[k] s[k] 结尾约束条件:以 s [ k ] s[k] s[k] 开头约束条件:增加子问题参数(前缀)约束条件:增加子问题参数(后缀)约束条件:LIS长度为k且末尾元素最小 运行实例 问…

MySQL -DDL 及表类型

DDL 创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification:[DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 1.CHARACTER SET&#xff1a…

Java后端开发——MVC商品管理程序

Java后端开发——MVC商品管理程序 本篇文章内容主要有下面几个部分: MVC架构介绍项目环境搭建商品管理模块Servlet代码重构BaseServlet文件上传 MVC 是模型-视图-控制器(Model-View-Controller),它是一种设计模式,也…

.net7.0中把exe和dll分开打包

之前写过 C#把dll分别放在指定的文件夹_wpf core dll 放文件夹-CSDN博客 C#把dll打包到exe_c# 打包exe_故里2130的博客-CSDN博客 这都是老技术了,可以进行参考。 现在的.netcore系列有单独支持把exe和dll分开打包的功能了,当然也支持.net7.0和.net8.…

开源堡垒机Jumpserver

文章目录 开源堡垒机JumpserverJumpserver介绍安装环境部署安装jumpserver访问jumpserver的web界面 开源堡垒机Jumpserver Jumpserver介绍 Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的运维安全审计系统。 Jumpse…

AIGC-文生视频

stable diffusion: stable diffusion原理解读通俗易懂,史诗级万字爆肝长文,喂到你嘴里 - 知乎个人网站一、前言(可跳过)hello,大家好我是 Tian-Feng,今天介绍一些stable diffusion的原理&#…

js小技巧|如何提取经过Function函数混淆了的代码

关注它,不迷路。 本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除! 1.需求 星友发过来一个混淆代码,打开一看,长这…

(三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言Q1:卷积网络和传统网络的区别Q2:卷积神经网络的架构Q3:卷积神经网络中的参数共享,也是比传统网络的优势所在4、 具体的实现代码网络搭建…

C++二分查找、离线算法:最近的房间

作者推荐 利用广度优先或模拟解决米诺骨牌 本文涉及的基础知识点 二分查找算法合集 题目 一个酒店里有 n 个房间,这些房间用二维整数数组 rooms 表示,其中 rooms[i] [roomIdi, sizei] 表示有一个房间号为 roomIdi 的房间且它的面积为 sizei 。每一…

linux设置主机名

查看主机名:hostname 临时修改主机名:hostname 新主机名 [rootlocalhost ~]#hostname centos [rootlocalhost ~]#hostname centos 永久修改主机名: [rootlocalhost ~]#cat /etc/hostname localhost.localdomain

ArrayList 和 HashMap 源码解析

1、ArrayList 1.1、ArrayList 构造方法 无参创建一个 ArrayList 数组默认为空数组 transient Object[] elementData; private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA {}; private int size; // 数组容量大小public ArrayList() {this.elementData DEFA…

基于springboot校园车辆管理系统

背景 伴随着社会经济的快速发展,机动车保有量不断增加。不断提高的大众生活水平以及人们不断增长的自主出行需求,人们对汽车的 依赖性在不断增强。汽车已经发展成为公众日常出行的一种重要的交通工具。在如此形势下,高校校园内的机动车数量也…

java设计模式学习之【原型模式】

文章目录 引言原型模式简介定义与用途实现方式UML 使用场景优势与劣势原型模式在spring中的应用员工记录示例代码地址 引言 原型模式是一种创建型设计模式,它允许对象能够复制自身,以此来创建一个新的对象。这种模式在需要重复地创建相似对象时非常有用…

近五年—中国十大科技进展(2018年—2022年)

近五年—中国十大科技进展(2018-2022) 2022年中国十大科技进展1. 中国天眼FAST取得系列重要进展2. 中国空间站完成在轨建造并取得一系列重大进展3. 我国科学家发现玉米和水稻增产关键基因4. 科学家首次发现并证实玻色子奇异金属5. 我国科学家将二氧化碳人…

Vue 定义只读数据 readonly 与 shallowReadonly

readonly 让一个响应式数据变为 **深层次的只读数据**。 shallowReadonly 让一个响应式数据变为 **浅层次的只读数据**,只读第一层。 isReadonly 判断一个数据是不是只读数据。 应用场景:不希望数据被修改时使用。 readonly深层次只读: …

读像火箭科学家一样思考笔记12_实践与测试(下)

1. 舆论的火箭科学 1.1. 如果苹果违反了“即飞即测”原则,那苹果的iPhone就不会问世了 1.1.1. iPhone在其上市前的民意调查中相当失败 1.1.1.1. iPhone不可能获得太大市场份额,不可能。 1.1.1.1.1. 微软前CEO史蒂夫鲍尔默(Steve Ballmer&…

msng病毒分析

这是一个非常古老的文件夹病毒,使用XP系统的文件夹图标,采用VB语言开发,使用了一种自定义的壳来保护,会打开网址http://www.OpenClose.ir,通过软盘、U盘和共享目录进行传播,会在U盘所有的目录下生成自身的副本&#xf…

采集工具-免费采集器下载

在当今信息时代,互联网已成为人们获取信息的主要渠道之一。对于研究者和开发者来说,如何快速准确地采集整个网站数据是至关重要的一环。以下将从九个方面详细探讨这一问题。 确定采集目标 在着手采集之前,明确目标至关重要。这有助于确定采集…