博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IAR无法调试问题解决
阅读量:6039 次
发布时间:2019-06-20

本文共 1202 字,大约阅读时间需要 4 分钟。

IAR在线调试不能设置断点 、 IAR断点无效

 转载自http://blog.csdn.net/ybhuangfugui

Ⅰ、写在前面

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

 

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

 

查看断点的方法:菜单view->breakpoints 就会在窗口显示所有断点信息。

 

通常出现这类现象是因为你要加断点的位置并没有程序(或不匹配程序),也就是你的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、、也经常修复或升级。

 

若怀疑是IAR软件自身的问题,建议升级到最新。我个人喜欢尝试新鲜的东西,之前看过我文章的人都知道,Keil、IAR新版我和大家分享过。若你IAR出现此类问题,上面几种方法都无效,建议更新IAR版本:

 

 

 

其他问题都排除了,还有可能是Windows系统高度优化的问题,这个建议重装系统。

转载于:https://www.cnblogs.com/a-d-a-m/p/7426444.html

你可能感兴趣的文章
linux系统下安装两个或多个tomcat
查看>>
ProtoBuffer 简单例子
查看>>
iOS多线程开发系列之(一)NSThread
查看>>
微信小程序初体验(上)- 腾讯ISUX社交用户体验设计成员出品
查看>>
SAP WM Physical Inventory Method ST & PZ
查看>>
一次快速的数据迁移感悟
查看>>
《ELK Stack权威指南(第2版)》一3.6 Java日志
查看>>
C++流的streambuf详解及TCP流的实现
查看>>
《量化金融R语言初级教程》一2.5 协方差矩阵中的噪声
查看>>
mysql到elasticsearch数据迁移踩坑实践-Ali0th
查看>>
beetl 和 shrio 结合
查看>>
相对/绝对路径,cd命令,mkdir/rmdir命令,rm命令
查看>>
tomcat中web.xml各配置项的意义
查看>>
Nodejs学习笔记(二):《node.js开发指南》代码中需要注意的几点
查看>>
Ztree异步加载自动展开节点
查看>>
反射操作公共成员变量
查看>>
Android热修复升级探索——代码修复冷启动方案
查看>>
学校宿舍的深夜之思考
查看>>
VB.NET 生成DBF文件
查看>>
编译安装nginx 1.9.15
查看>>