使用KEIL5,不复位MCU,调试到程序运行到卡住之处

news2024/11/25 18:30:57

文章目录

  • 前言
  • 步骤1
  • 步骤2
  • 步骤3
  • 步骤4
  • 步骤5

前言

经常有朋友在开发中遇到这样的窘境,当单片机程序运行异常以后,由于调试信息做得并不是很全面,导致相应的问题场景非常难分析。当时的你肯定会叹息道:“要是我一直插着仿真器就好了,这个bug还不是分分钟的事~”,每个人都想有颗“后悔药”可吃,然而遇到这种场景也并非绝路。主要是因为大部分朋友插上仿真器以后,调试器在启动时会发出硬件重置信号,应用程序当前的状态都会丢失,包括内存变量、状态等等,对于一些长时间的偶发故障调试更不太友好。此时此刻有一种调试需求是朋友们非常想要的:一旦程序出了问题,我只需要插上仿真器,目标硬件不会复位,而是与我当前所调试的程序同步,类似于仿真程序的时候的“全速运行”,然而通过添加断点,便可查看程序具体的运行状态,内存等等信息,让bug闻风丧胆。很多朋友可能也只是想想,毕竟大家都比较专注程序中的应用逻辑,而忽略了调试器这块的功能研究,自己就定义这种调试方式比较难吧或者没有这种功能而不了了之。大家调试的需求也是一种用户需求,相应工具的开发厂家会根据相应的需求进行开发,所以该功能在大部分主流的开发工具中都已具备,下面我们就验证一下这个功能的可行性

步骤1

1、首先编译好工程,把将要实验的程序完整的烧录一次,必须要保证MCU中正在运行的程序与所要仿真的工程同步,这样调试器通过调试接口获取的程序运行位置信息才能与工程代码中的位置一一对应。

步骤2

2、去掉启动时加载应用程序,并加入Loader.ini文件,主要用于加载已经编译生成的.axf文件到Keil中,从而进行调试。
在这里插入图片描述
在这里插入图片描述

可能你该问了.axf文件是什么?

其实axf全称为:ARM Executable File,该文件包含bin代码和大量的调试信息,这些调试信息可以被调试器使用,从而定位到我们的C代码

步骤3

3、在调试器Setting选项中,去掉"Reset after Connect",为了调试器链接以后不进行复位动作,从而破坏现场。
在这里插入图片描述

步骤4

4、接下来Update Target Before Debugging选择需要去掉,直接调试运行目标不需要勾选,也就不会更新Flash。

在这里插入图片描述

步骤5

验证结果

直接在全局变量打印输出的地方放置断点,程序运行到断点处正常停止。
在这里插入图片描述
然后我们看一下输出的串口信息数据是否连续,如果打印的数据连续说明程序没有复位,接着反正前正在运行的程序往下执行。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Concept Sliders】通过拖到滑块来精确控制特定图像特征

Concept Sliders 是一种用于扩散模型(如 Stable Diffusion)的LoRA 适配器,允许用户在图像生成过程中对特定概念进行精细控制。与依赖提示词生成图像的传统方法不同,Concept Sliders 通过引入可调整的“滑块”,用户可以…

前端读取本地表格数据

vue3tsvite 无后端提供数据的情况下,前端读取本地表格数据,并将数据放入页面结构中 展示在网页中 记得先安装npm install xlsx 目录 read_xlsx.ts import * as XLSX from xlsx; //将行,列转换 function transformSheets(sheets: { [key: string]: any })…

技术架构的演进之路

技术架构的演进之路 我们以电商系统的技术架构发展为例 文章目录 1. 单体架构2. 应用数据分离架构3. 应用服务集群架构4. 读写分离、主从分离架构5. 冷热分离架构6. 垂直分库架构7. 微服务架构8. 容器编排架构 1. 单体架构 在前期用户访问量很少的时候,没有对性能、安全等提出…

自然语言处理(NLP)论文数量的十年趋势:2014-2024

引言 近年来,自然语言处理(NLP)已成为人工智能(AI)和数据科学领域中的关键技术之一。随着数据规模的不断扩大和计算能力的提升,NLP技术从学术研究走向了广泛的实际应用。通过观察过去十年(2014…

uniapp中添加colorUI的过程

1、先将colorUI文件粘到项目中去 2、common中添加两个文件 3、App文件中引入这两个文件

毕业设计选题:基于ssm+vue+uniapp的健身管理系统小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…

2024年软件设计师中级(软考中级)详细笔记【5】软件工程基础知识下(分值10+)

第5章软件工程 目录 前言第5章 软件工程基础知识(下)5.5 系统测试5.5.1 系统测试与调试5.5.2 传统软件的测试策略5.5.5 测试方法5.5.5.1 黑盒测试5.5.5.2 白盒测试白盒测试McCabe度量法伪代码白盒测试McCabe 5.6 运行和维护知识【以背为主】5.6.2 系统维…

Asahi Linux通过大量变通方法实现在M系列Mac上支持AAA级游戏

如果您正在运行 Asahi Linux 并希望在您的 M 系列 Mac 上玩游戏,那么有一个好消息要告诉您,Asahi Linux 项目将继续推出新功能。 2 月份它在 Mac 上Apple Silicon 实现了OpenGL 4.6 和 OpenGL ES 3.2 兼容,现在又在游戏方面取得了进展。但您可…

WRN: 宽度残差网络(论文复现)

WRN: 宽度残差网络(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 WRN: 宽度残差网络(论文复现)概述模型结构核心逻辑实验训练与测试在线部署使用方式 概述 本文复现论文 Wide Residual Networks提出的深度神经网…

软件狗加密的高安全性

软件狗加密,即使用软件加密狗对软件进行加密保护的过程,是一种软硬件结合的加密方式。以下是对软件狗加密的详细解析: 一、软件加密狗的基本概念 软件加密狗,也称为硬件加密锁或USB密钥,是一种用于保护软件和数据安全的…

IEC104规约的秘密之十----令人眼花缭乱的各种限定词,品质描述词

当我们已经能用104通讯完成各种通讯也能解决帧序号等各种问题后,我们就更加关心报文的细节。 各种报文中的限定词就可以进行仔细分析了。 下面以单点遥信做为例子进行分析: SIQ是英文Single-point information with quality descriptor的缩写&#xff0…

HTML+CSS排行榜实现代码,复制粘贴可使用

如何用HTML和CSS创建一个具有吸引力的创作者排行榜 在数字化时代,排行榜是吸引用户注意的绝佳方式。无论是展示最受欢迎的产品、文章还是创作者,一个设计精良的排行榜都能提升用户的参与度和兴趣。本文将指导你如何使用HTML和CSS创建一个具有吸引力的创…

Rider + xmake DX12 开发环境

Rider xmake DX12 开发环境 背景 如题,想要接近 UE 的开发流程 正文 大的流程就是 xmake 生成 vs 的 sln,用 Rider 进行开发 intellisense,断点调试 加了个脚本手动刷新 sln xmake project -k vsxmake -m "debug;release" -…

msvcr100.dll丢失的解决方法,如何安全下载 msvcr100.dll 文件:完全指南

在使用 Windows 操作系统的电脑上运行某些程序或游戏时,可能会遇到一个常见的错误消息,提示缺少 msvcr100.dll 文件。这个 DLL 文件是 Microsoft Visual C 2010 Redistributable Package 的一部分,对于运行依赖于 C 的软件来说至关重要。如果…

Linux等保测评与加固

Linux三级系统测评及加固方法 身份鉴别 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 测评方法: ①一般采用用户名口令进行身份鉴别,身份标识具有唯一性无法创建相同用户名 通…

WPF 手撸插件 八 操作数据库一

1、本文将使用SqlSugar创建Sqlite数据库,进行入门的增删改查等操作。擦,咋写着写着凌乱起来了。 SqlSugar官方文档:简单示例,1分钟入门 - SqlSugar 5x - .NET果糖网 2、环境SqlSugar V5.0版本需要.Net Framework 4.6 &#xff0…

MySQL 创建子账号

1. 使用 root 账号登录 MySQL 使用 root 账号登录 MySQL,登录成功如图所示: 新建一个 MySQL 子账号,新建子账号命令如下: 命令 : CREATE USER testlocalhost IDENTIFIED BY 123456;若出现如下图所示,则表示新建 MySQL…

技术总结(三)

Checked Exception 和 Unchecked Exception 有什么区别? Checked Exception 即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被 catch或者throws 关键字处理的话,就没办法通过编译。 比如下面这段 IO 操作的代码&…

设计模式---责任链模式快速demo

Handler(处理者): 定义一个处理请求的接口。通常包括一个处理请求的方法。它可以是抽象类或接口,也可以是具体类,具体类中包含了对请求的处理逻辑。处理者通常包含一个指向下一个处理者的引用。ConcreteHandler&#x…

esp32-c3 Supermini 模块下载

1.此模块自带usb 功能,可以直接利用数据线连接模块与pc进行下载。此模块不带uart to usb 集成块。 2. 此模块下载只能用自带type c 数据口与pc usb 连接进行。不能用usb 转 uart 对模块下载,但可以通讯 3. 利用idf.py 对模块下载前,必…