我们可以自己建立自己的工程了,但这一步只是开发中的第一小步。今天就来说说开发中举足轻重的另外一件事:调试。

其实调试本身也并不难,楼主总结,调试关键在于两件事,一是运行,二是观察,为了更好的实现这两者,就牵涉到如何设置断点。

运行很简单了,仔细观察调试工具栏:

从左向右依次是:复位,暂停,步过,步入,步出,下一句,至光标,运行,退出调试模式。

运行是以指令指针为参照的,在环境中表现为绿色的小箭头:

指令指针指向的该行,表示的是接下来准备要执行的代码行。

复位:指令指针回到开头,
暂停:使正在奔跑的程序立定
步过:执行当前这句话,如果这句话是函数调用,就把整个函数执行完,停在下一句
步入:执行当前这句话,如果这句话是函数调用,就进入到函数里,停在函数的第一句话
步出:一直执行到从当前的函数返回,停在函数返回后的下一句话
下一句:执行C语言的一条语句,停在下一句代码上
至光标:一直运行到光标所在行,并停在这一行上
运行:运行到遇到断点
退出调试模式:……额,就是退出调试模式

观察,就是看——看什么?什么都看!

在菜单View中,我们可以了解都有哪些可以看,重点都在中间那一段中。

我们主要来看看重点中的重点,楼主比较常用的有以下这些:
Breakpoints:也就是断点
Disassembly:反汇编,也就是你写的程序经过编译烧写之后,在单片机中的样子
Memory:内存,可以查看全部内存中的数据,看起来就像一般的16进制编辑器
Symbolic Memory:符号内存,不但能看到内存数据,还能看出来对应程序中的什么变量
Register:寄存器,查看全部寄存器的内容
Watch:观察,可以根据你的需要,指定查看什么,根据楼主的经验,查看全局变量方便一些,在变量可见范围内,也可以查看局部变量和静态变量(static)
Locals:查看函数局部(变量等)内容,包括函数的参数
Statics:查看静态内存变量,注意不是指静态变量(static),而是生命周期是整个程序生命期的变量,原则上不在堆栈中的局部变量,应该都是静态内存变量。
auto:自动,指的不是C语言中的自动变量,而是指根据指令指针当前的位置,自动显示出相关的变量
Call Stack:调用栈,表示到当前位置的函数调用顺序图
Stack:栈,就是栈的数据表示

除了上述这些,还有一些可以看的东西,由于楼主不常用,因此楼主也不是百分百的清楚它们的意义和用法,就不在这里胡说八道了。
总体来说即使只弄明白上述这些,在调试的时候也足够了,绝对能让你想看哪里,就看哪里。

最后是断点,这个东西,可简单可复杂。所以下面我们简单来说说,便于大家好接受。

基本的断点,通过下载调试按钮旁边的有着红色圆的按钮,就可以在光标当前行进行设置或者取消了,

当然你也可以直接点击代码左侧的灰色区域,使断点出现或者消失。

这是一个普通的位置断点,在IAR中也被称为代码断点,也就是当运行到这里的时候停下来。下图是断点窗格里看到的代码断点

设置好代码断点,让程序运行,程序就会在运行到断点的位置时自动暂停下来了。
以前经常有童鞋来问楼主,打了断点为啥停不下来……很简单,压根没跑到你设置断点的地方呗!

在我使用的环境中,除了代码断点,还支持条件断点和高级断点的设置。

可能是由于楼主也不太会使用这个,只能设置到读写某个变量时暂停,我连单独的读或写操作都无法指定,如下图所示。

在用其他环境调试的时候,楼主也经常利用条件断点来监视某个变量被修改成非法值的时机点,以此来跟踪调查程序运行混乱的问题。

简单总结一小下,调试时我们在做程序的时候,话费最多时间的阶段,所以从学习IDE的使用开始上手,能有效提高我们调试的效率,把程序做得更大更好更稳定。

iar调试的更多相关文章

  1. 一步一步学FRDM-KE02Z(一):IAR调试平台搭建以及OpenSDA两种工作模式设置

    摘要:FRDM-KE02Z是飞思卡尔公司较为新的微控制器,学习和开发资料较少.从本篇开始会陆续介绍其相关的开发流程,并完成一个小型的工程项目.这是本系列博客的第一篇,主要介绍开发环境IAR for A ...

  2. IAR调试时出现IAR one or more breakpoints could not be set and have been disabled的解决办法

    问题:在IAR调试时,单步执行的时候绿色箭头一直指向汇编界面,不指向C语言界面,并且不能在C语言界面设置断点,以及在代码编辑界面,设置断点,点调试时总提示IAR one or more breakpo ...

  3. IAR调试查看程序时间

    在无仿真器情况下设置: 调试仿真,点击view菜单下registers 软件仿真时计算两断点CYCLECOUNTER(在CPU registers中)的差值,乘以指令周期(MCLK)便是执行时间

  4. IAR调试cc2541串口遇到的Warning : Possible IDATA stack overflow detected

    1. 遇到的错误如下,似乎是栈空间不够使用 2. 修改界面如下,增加IDATA的大小,不过最大似乎是0XFF.

  5. 痞子衡嵌入式:IAR在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致(J-Link / CMSIS-DAP)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致. 做Cortex-M内核MCU嵌入式软件开发,可用的集成开发环境( ...

  6. 痞子衡嵌入式:IAR内部C-SPY调试组件配套宏文件(.mac)用法介绍

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR内部C-SPY调试组件配套宏文件(.mac)用法. 痞子衡之前写过一篇 <JLink Script文件基础及其在IAR下调用 ...

  7. 【STM32H7教程】第7章 STM32H7下载和调试方法(IAR8)

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第7章   STM32H7下载和调试方法(IAR8) 本 ...

  8. 【安富莱专题教程第2期】uC/Probe简易使用说明,含MDK和IAR,支持F103,F407和F429开发板

    说明:1. 在uCOS工程调试时,这个软件还是非常给力的,方便查看各种信息,可以认为是MDK或者IAR调试功能的图形化版本,使用JLINK连接可以随时连接查看,无需目标端代码.2. 当前教程中,我们使 ...

  9. IAR FOR STM8S 错误 An error occurred while retrieving GDI features: gdi-error [40201]解决方法

    今早使用IAR调试编译调试一个工程,发现IAR竟然出现如下错误信息 An error occurred ]: Can't access configuration database 在网上查看了一下, ...

随机推荐

  1. 关于POI解析Excel文件(03和07版本不同)的问题

    问题描述:在使用poi包进行excel解析时,发现对Excel2003以前(包括2003)的版本没有问题,但读取Excel2007时发生如下异常:org.apache.poi.poifs.filesy ...

  2. HBase如何选取split point

    hbase region split操作的一些细节,具体split步骤很多文档都有说明,本文主要关注regionserver如何选取split point 首先推荐web ui查看hbase regi ...

  3. [NOIP2016]换教室 D1 T3 Floyed+期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

  4. jesperreport+ireport简单理解

    ireport:主要是生成报表模板 jesperreport:主要是用.jesper文件填充数据(jdbc.javabean)生成面向用户的文件(PDF.HTML等)

  5. event

    当一个事件被调用后,它会收到一个参数,第一个参数就是事件对象,事件对象包含type, target, timestamp三个. 类型:事件的名称,例如:点击目标:事件的目标元素时间戳:事件触发的时间

  6. UML图示说明

    UML图示说明 继承:实线空三角形箭头指向父类 接口:虚线空三角形箭头指向接口 关联:实线无箭头方指向拥有者 聚合:实线空心菱形箭头指向整体,部分可以单独存在 组合:实线菱形指向整体,部分不能单独存在 ...

  7. 使用数据泵+dblink迁移数据库,适用于本地空间不足的情况

    col name for a40 select name,locks,pins from v$db_object_cache where locks > 0 and pins > 0 an ...

  8. Codeforces Round #383 (Div. 2) D 分组背包

    给出一群女孩的重量和颜值 和她们的朋友关系 现在有一个舞台 ab是朋友 bc是朋友 ac就是朋友 给出最大承重 可以邀请这些女孩来玩 对于每一个朋友团体 全邀请or邀请一个or不邀请 问能邀请的女孩的 ...

  9. PHP之简单实现MVC框架

    PHP之简单实现MVC框架   1.概述 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种 ...

  10. 别再为了iOS新系统设备而重新安装一个新版Xcode了.其实我们可以添加版本支持

    众所周知,Xcode7.3的代码补全是有问题的  如导入自定义类之后,在代码中并不会补全相应的类名... 但Xcode7.2是没有这个问题的,但很多时候我们自己的设备都升级到了iOS9.3.X系统,导 ...