单片机技术网|技术阅读
登录|注册

您现在的位置是:单片机技术网 > 技术阅读 > IAR不能设置断点如何解决?

IAR不能设置断点如何解决?

关注+星标公众号,不错过精彩内容

作者 | strongerHuang

微信公众号 | 嵌入式专栏


有读者问:我IAR在线调试过程中不能打断点,但在编辑的时候可以打断点,一点击调试按钮之后,打的断点就失效了······


还有类似的问题:调试过程中,在反汇编的窗口中可以设置断点,在C编译区不能设置断点。


下面就来说说关于IAR断点的内容。

IAR断点查看和设置

IAR查看断点的方法:菜单view->breakpoints 就会在窗口显示所有断点信息(需要在调试状态下)。


IAR断点在编辑状态下也可以设置(打断点),但编辑状态下打断点“不准”,比如在注释行也可以打断点:


其实,在Keil MDK中也存在编辑状态下,注释行可以打断点的问题:


编辑状态下打断点严格来说算bug,但这不是关键的问题。


IAR不能打断点常见解决办法

通常出现上面类似现象是因为你要加断点的位置并没有程序(或不匹配程序),也就是你的C代码和你的实际代码对不上号了。遇到以上问题,解决的办法一般有下面几种。


1.Rebuild All重新编译A.Project -> Clean:把前面编译后的文件删除;B.Project -> Rebuild All:再重新编译所有文件。
这种情况比较常见,有可能是在更改了部分文件。
2.查看配置是否正确A.生产Debug信息Project -> Options -> C/C++ Compiler -> Output:勾选上“Generate debug informat” 这个选项。
B.链接包含Debug信息Project -> Options -> linker -> Output:勾选上“Include debug information in output ” 这个选项。
3.代码优化等级较高在某些场合下,比如要求执行代码的速度,或者代码容量比较大而芯片容量又有限,就需要对代码进行优化,优化的等级分多种。
没有特别要求,代码就可以不用优化。代码高度优化存在弊端,特别是代码不规范的情况下。有一点就是本文说的,高度优化的代码,会影响在线调试,可能你某部分代码被优化导致你不能打断点。
这个时候就容易出现:在先调试过程中,在反汇编的窗口中可以设置断点,在C编译区不能设置断点。
Project -> Options -> C/C++ Compiler -> Optimizations选择优化的等级:
4.代码处于条件编译未选中状态什么是条件编译呢?就是#if #else #endif 这类带有#的预处理编译。如果你的代码不再预编译里面,则不能打断点。
5.推测的问题我们都知道是软件,就可能存在bug,即使是强大的Windows、iOS、Android操作系统也经常修复或升级。
若怀疑是IAR软件自身的问题,建议升级版本试试。或者看下你Windows是不是“高度优化”的系统导致的问题,换台电脑试试。
------------ END ------------


后台回复IAR软件工具阅读更多相关文章。


欢迎关注我的公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
欢迎关注我的视频号:


点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。