找回密码
 立即注册
楼主: men007

IAR入门指南之调试

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-13 22:44:49 | 显示全部楼层
监视内存和寄存器
C-SPY提供了许多窗口来监视内存和寄存器,它们都在View菜单中提供:
内存窗口展示了内存特定区域最新的内容—在C-SPY中称之为内存区—而且允许你对它进行编辑。 色彩用于指示数据范围 (根据你的产品软件包) 及你的应用怎样执行。你可以填充特定的具有特殊值的区域并可以直接在内存某个位置或范围设置断点。你可以打开多个这种窗口实例,来监视不同存储区域。
符号存储窗口  显示静态存储的变量在内存中布置存放的情况。这有助于更好地理解内存的用法或者探究变量被覆盖导致的问题,例如缓冲区超出了限制。
堆栈窗口显示堆栈的内容, 包括堆栈变量在内存中如何布置。更多详细资料, 查看堆栈的用法, 第 58 页。
寄存器窗口显示处理器的寄存器及 SFRs 的最新内容, 并允许你编辑它们。
要查看特定变量在内存中的内容, 简单地将该变量拖拽到内存窗口或符号存储窗口,放置变量的内存区域就会显示出来。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-13 22:45:40 | 显示全部楼层
使用断点
基于你正在使用的C-SPY 驱动, 可以设置各种断点:
代码断点用于代码定位以研判你的程序逻辑是否正确或打印输出追踪过程。
日志断点提供一种增加打印输出踪迹的方便的方法, 不必给应用程序的源代码添加任何代码。
追踪的起停断点  收集开始和停止追踪之间的数据—便于分析两个执行点之间的指令。 另见追踪, 第 59 页。
数据断点由内存读写访问触发。一般来说, 数据断点用来研判数据何时和怎样发生的变化。
除了这些断点外,C-SPY 驱动还会支持更复杂或其它断点或不同种类的触发器, 取决于你正在使用的调试系统。
设置断点:在左边页边空白处定位插入点。在一条语句上或附近双击,切换代码断点的开启和关闭。
或者,使用编辑窗口, 断点窗口和反汇编窗口的上下文菜单提供的断点 对话框。 对话框给你更加详细的方法来设置不同类型的断点并编辑它们。
注意:  大多数硬件调试系统只能在应用没有执行时设置断点。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-13 22:47:24 | 显示全部楼层
断点在编辑窗口的左边空白处用一个图标做标记:



如果没有出现断点图标,那么就要确保,在 IDEOptions>Editor 对话框中,已经选择了 Show bookmarks 选项 。

截图202504132251523127.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-13 22:55:27 | 显示全部楼层
用鼠指到断点图标处,以获取详细的在同一个位置设置的所有断点的文字提示信息。第一行是断点信息,接下来的行描述用来实现用户断点的物理断点。 后面的信息还可以在断点用法对话框中看到。
查看所有已定义的断点:
截图202504132256483734.jpg
选择 View>Breakpoints 打开断点窗口,列出所有的断点。这里你可以方便地监视,开启和关闭断点;你还可以定义新断点,修改和删除现有的断点。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-13 22:58:15 | 显示全部楼层
研究断点消费者:
打开断点使用窗口—在C-SPY驱动专用菜单上—可以查看到底层所有断点, 你定义的和 C-SPY 内部使用的都有。
通常,目标硬件的 (C-SPY 用来设置断点的)硬件断点数量有限, 有时只有一两个。 超过可用硬件断点数量会迫使调试器单步执行程序。 这会严重降低执行速度。
在硬件断点数量有限的硬件调试系统中,使用断点使用窗口来实现:
●   识别所有断点的消费者
●    检查目标系统支持的活动断点数量
●    如果可能的话,配置调试器以更好的方式使用可用的断点。
执行到达断点:
      1 单击工具条上的Go按钮。应用程序会执行到设置的下一个断点。调试日志窗口会包含断点触发的信息。
2 选择断点, 右键单击并从上下文菜单选择Toggle Breakpoint (xxx)
来删除一个断点。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-14 07:37:33 | 显示全部楼层
查看终端 I/O
有时你不得不调试使用stdin和stdout的应用构造过程, 没有硬件可以支持。C-SPY允许你通过使用终端I/O窗口来模拟stdin和stdout。
使用终端 I/O 窗口:
1 使用以下这些选项来构建你的应用:


截图202504140739472386.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-14 07:41:21 | 显示全部楼层
这意味着一些底层程序的链接使得stdin和stdout直接指向终端I/O窗口。
2        构建你的应用并启动C-SPY。
3        选择 View>Terminal I/O 打开终端窗口, 根据 I/O 操作显示输出结果。

截图202504140741552795.jpg









回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-14 07:42:40 | 显示全部楼层
分析应用的运行时行为
C-SPY提供多种功能用来分析你的应用的运行时行为, 定位任何瓶颈并验证你的用来测试的应用的所有部件:
●   梗概
●   代码覆盖
●   堆栈用法
●   踪。
梗概
你可以在两个梗概变体之间选择:
函数梗概 有助于找到函数执行最花费时间的地方。这些函数是你优化代码时应该集中注意的部分。最优化一个函数的简单的方法是使用速度最优化来编译它。或者,将函数转移到最高效寻找模式的内存中。
指令梗概在反汇编窗口显示—每条指令已执行次数—的信息,可以在非常细的水平上帮助你调优代码, 尤其是汇编源代码。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-14 07:43:32 | 显示全部楼层
使用梗概:
1    使用以下这些选项来构建你的应用:



2   构建你的应用并启动C-SPY。
3   在使用梗概之前, 必须先设置好。设置会随着C-SPY驱动和目标系统变化。
4    打开函数的梗概窗口, 在驱动专用的菜单上选择Profiling
5  单击 Enable 按钮开启梗概。

截图202504140745563925.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-06-17 04:01:08

7

主题

286

回帖

1399

积分

金牌会员

积分
1399
发表于 2025-4-14 07:47:36 | 显示全部楼层
6   开始执行你的应用并收集梗概信息。
7   梗概信息显示在函数梗概窗口。
截图202504140748402777.jpg
整理信息, 单击相关的栏目标题。
8   你开始新的采样之前, 单击 Clear 按钮。
9   单击 Graph 按钮进行切换,将百分比栏目要么按数值要么者按直方图显示。
代码覆盖
代码覆盖有助于你的测试过程确保代码所有部分都得到执行。 还有助于你识别那块代码没有执行到。
注意:当你在硬件上调试时, 代码覆盖可能会有限制; 特别是, 循环计数器的统计可能不能用。

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 15:18 , Processed in 0.134414 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表