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会输出日志和错误消息,记录编译、连接和调试过程中的信息。仔细阅读这些日志和错误消息,可以发现潜在的问题和错误。

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

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

相关文章

Nginx-进程

Nginx-相关问题_01 Windows关闭所有nginx服务 windows 系统下开发调试时不用每次频繁的 启动->任务管理器->查找进程->结束进程! 查看nginx的进程占用情况 tasklist | find /i "nginx.exe" || exit关闭nginx的所有进程 taskkill /im nginx.…

09. 智慧商城——订单结算、订单管理

01. 订单结算台 所谓的 “立即结算”&#xff0c;本质就是跳转到订单结算台&#xff0c;并且跳转的同时&#xff0c;需要携带上对应的订单参数。 而具体需要哪些参数&#xff0c;就需要基于 【订单结算台】 的需求来定。 (1) 静态布局 准备静态页面 <template><di…

2023-11-25 LeetCode每日一题(二叉树中的伪回文路径)

2023-11-25每日一题 一、题目编号 1457.二叉树中的伪回文路径二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的&#xff0c;当它满足&#xff1a;路径经过的所有节点值的排列中…

scipy 笔记:scipy.spatial.distance

1 pdist 计算n维空间中观测点之间的成对距离。 scipy.spatial.distance.pdist(X, metriceuclidean, *, outNone, **kwargs) 1.1 主要参数 X一个m行n列的数组&#xff0c;表示n维空间中的m个原始观测点metric使用的距离度量out输出数组。如果非空&#xff0c;压缩的距离矩阵…

SpringCloud之服务网关Gateway组件使用——详解

目录 一、网关介绍 1.什么是服务网关 2. 为什么需要网关 3.网关组件在微服务中架构 二、服务网关组件 1. zuul 1.x 2.x(netflix 组件) 1.1 zuul版本说明 2. gateway (spring) 2.1 特性 2.2 开发网关动态路由 2.2.1.创建项目引入网关依赖 2.2.2 快捷方式配置路由 2.2…

Vue3挂载完毕后,隐藏dom再重新加载组件的方法

组件原本是在PC端使用的&#xff0c;现在需要把组件再封装一次&#xff0c;供app调用&#xff0c;但是在app上会显示tag栏&#xff0c;有占位影响空间&#xff0c;所以需求去掉头部tag&#xff0c;只显示下方组件。 实现方法&#xff0c;以前是直接引用的组件&#xff0c;现在改…

简介vue

目录 一、介绍 渐进式框架​ 单文件组件​ 选项式 API (Options API)​ 组合式 API (Composition API)​ 该选哪一个&#xff1f;​ 创建一个 Vue 应用 应用实例​ 根组件​ DOM 中的根组件模板 应用配置​ 多个应用实例​ 一、介绍 Vue (发音为 /vjuː/&#xff…

.NET生成微信小程序推广二维码

前言 对于小程序大家可能都非常熟悉了&#xff0c;随着小程序的不断普及越来越多的公司都开始推广使用起来了。今天接到一个需求就是生成小程序码&#xff0c;并且与运营给的推广图片合并在一起做成一张漂亮美观的推广二维码&#xff0c;扫码这种二维码就可以进入小程序。为了…

【开源】基于Vue.js的大学计算机课程管理平台的设计和实现

项目编号&#xff1a; S 028 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S028&#xff0c;文末获取源码。} 项目编号&#xff1a;S028&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2…

前端环境变量释义process.env与import.meta.env

视频教程 彻底搞懂前端环境变量使用和原理&#xff0c;超清楚_哔哩哔哩_bilibili 添加命令行参数 --modexxxxx 新建.env.xxxx文件,其中.env文件会在所有环境下生效 以VITE_开头&#xff0c;字符串无需加双引号 使用import.meta.env.VITE_xxxxx进行调用

【数据结构】树与二叉树(廿四):树搜索指定数据域的结点(算法FindTarget)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲3. 搜索指定数据域的结点a. 算法FindTargetb. 算法解析c. 代码实现a. 使用指向指针的指针b. 直接返回找到的节点 4. 代码整合 5.3.1 树的存储结构 5.…

C++之模版初阶(简单使用模版)

前言 在学习C的模版之前&#xff0c;咱们先来说一说模版的概念&#xff0c;模版在我们的日常生活中非常常见&#xff0c;比如我们要做一个ppt&#xff0c;我们会去在WPS找个ppt的模版&#xff0c;我们只需要写入内容即可&#xff1b;比如我们的数学公式&#xff0c;给公式套值&…

【Linux】基本指令(二)

本文续接上文基本指令&#xff08;一&#xff09; 目录 cpmvcatmore && less cp 语法&#xff1a;cp [选项] 源文件或目录 目标文件或目录 功能: 复制文件或目录 说明: cp指令用于复制文件或目录&#xff0c;如同时指定两个以上的文件或目录&#xff0c;且最后的目的地…

第一节HarmonyOS DevEcoStudio工具下载以及环境搭建

一、下载与安装DevEco Studio 在HarmonyOS应用开发学习之前&#xff0c;需要进行一些准备工作&#xff0c;首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio 工具下载官网&#xff1a;https://developer.harmonyos.com/cn/develop/deveco-stu…

经典滑动窗口试题(二)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、水果成篮1、题目讲解2、讲解算法思路3、代码实现 二、找到字符串中所有字母异位词1、题目…

距离向量路由协议——IGRP和EIGRP

IGRP-内部网关路由协议 IGRP&#xff08;Interior Gateway Routing Protocol&#xff0c;内部网关路由协议&#xff09;是一种动态距离向量路由协议&#xff0c;它是Cisco公司在20世纪80年代中期设计的&#xff0c;是Cisco专用路由协议。目前在Cisco高版本的IOS已经对IGRP不提…

交叉编译

1. 交叉开发 交叉编译&#xff1a; 在电脑把程序编写 编译 调试好 再下载到嵌入式产品中运行 编译&#xff1a; gcc 之前编译环境和运行环境是一样的 交叉编译&#xff1a; 编译 把编译代码和运行分开 编译代码在虚拟机中 运行…

BGP基础配置

EBGP是AS之间 IBGP是AS内 R1-R2是EBGP,R4-R5是EBGP R2-R3-R4是IBGP 第一步基础配置&#xff1a;IP地址 [r1-GigabitEthernet0/0/0]ip ad 12.0.0.1 24 [r1-LoopBack0]ip ad 1.1.1.1 32 [r2-GigabitEthernet0/0/0]ip ad 12.0.0.2 24 [r2-LoopBack0]ip ad 2.2.2.2 32 [r2-Loop…

【论文解读】在上下文中学习创建任务向量

一、简要介绍 大型语言模型&#xff08;LLMs&#xff09;中的上下文学习&#xff08;ICL&#xff09;已经成为一种强大的新的学习范式。然而&#xff0c;其潜在的机制仍未被很好地了解。特别是&#xff0c;将其映射到“标准”机器学习框架是具有挑战性的&#xff0c;在该框架中…

成功解决:AssertionError: Torch not compiled with CUDA enabled

在运行pycharm项目的时候&#xff0c;出现了以上的报错&#xff0c;主要可以归结于以下两个个方面&#xff1a; 1、没有安装GPU版本的pytorch&#xff0c;只是使用清华的镜像地址下载了CPU版本的pytorch 2、安装的CUDA和安装的pytorch的版本不相互对应 我使用 pip list 来…