0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解决IAR不能设置断点的问题

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-20 10:03 次阅读

写在前面

有网友问:我在使用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、iOSAndroid操作系统也经常修复或升级。

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

IAR for STM8介绍、下载、安装与注册

IAR for ARM介绍、下载、安装与注册

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IAR
    IAR
    +关注

    关注

    5

    文章

    319

    浏览量

    36284
  • 在线调试
    +关注

    关注

    0

    文章

    5

    浏览量

    6492
收藏 人收藏

    评论

    相关推荐

    IAR断点停止后,鼠标放在watch窗口中查看变量,IAR卡死退出怎么解决?

    IAR版本:8.32 操作过程如下: 1.在IAR设置相关端点; 2.在观察(watch)窗口中加入相关变量或数组,用于在程序断点停止后观测其数值变化; 3.运行程序至端点停止后,一
    发表于 04-19 07:21

    STM8S003仿真的时候如果打了断点,运行到断点后再继续运行,程序就会出错跑飞RAM数据都乱了,为什么?

    我用IAR 8.3 ,发现仿真的时候如果打了断点,运行到断点后再继续运行,程序就会出错跑飞,RAM数据都乱了。不打断点,就不会出错,这是什么问题?
    发表于 04-18 08:27

    STM32F103中断服务程序里设置断点没有停下来是什么原因引起的?

    STM32F103程序,调试时在定时器中断服务程序中设置断点,但是没有停下来,程序能正常运行,看中断里的变量也有变化。多设置几个断点也没用。 其它地方
    发表于 04-07 08:02

    STlink仿真的时候断点个数有限是为什么?不能多打吗?

    比较好奇,为什么STlink仿真的时候断点个数有限啊?好像就支持3个吧,还是几个来着,为什么不像jlink一样,断点可以多打呢?
    发表于 03-20 07:36

    请问UDE调试有些函数前面是不能设置断点的吗?

    如下函数不能设置断点:IfxPort_togglePin( MODULE_P33, 8);IfxStm_waitTicks( MODULE_STM0, 5000000);
    发表于 02-20 06:55

    keil在线调试无法设置断点怎么解决?

    使用的是Keil IDE及Jlink仿真器,但是keil启动在线仿真时无法设置断点,仿真前设置断点在仿真时会无效,仿真仅能全速运行,如下图: 请问大家有没有遇到类似的情况,是怎么解决
    发表于 11-03 06:11

    怎么设置IAR输出BIN文件?

    怎么设置IAR输出BIN文件
    发表于 10-23 06:05

    硬件断点是什么?开发环境中的断点是软件断点吗?

    硬件断点是什么?用途?开发环境中的断点是软件断点吗?
    发表于 10-18 06:19

    GDB调试里怎么设置断点

    本篇讲解使用GDB调试Linux应用程序,以下以 hellowld.c 为例介绍 GDB 的调试入门: 设置断点   disable                 # 禁用所有断点
    的头像 发表于 10-04 16:10 565次阅读

    关于keil软件设置断点问题求解

    我写的一个程序有几个大的子函数,子函数中又有小的子函数,小的子函数中还有更小的子函数,我想在更小的子函数中设置断点,观察运行情况,但是无法添加。在子函数中和小的子函数中的语句可以添加断点,但是更深的子函数就不可以了。请问为什么?
    发表于 08-25 06:15

    如何实现硬件断点呢?

    这个断点调试是不是在仿真中没法运行,只能在实际上板中进行测试?因为我在nucleistudio中设置断点然后用底层vivado进行仿真并没有实际效果
    发表于 08-11 12:54

    Keil调试时设置断点的高级用法

    在线调试程序时,打断点是非常有效的一种方式,配合单步调试,可以快速定位问题。但有的时候,手动打断点用起来不是那么方便。
    的头像 发表于 08-04 09:34 2347次阅读
    Keil调试时<b class='flag-5'>设置</b><b class='flag-5'>断点</b>的高级用法

    IAR中如何设置LDROM为程序存储空间?

    IAR中如何设置LDROM为程序存储空间
    发表于 06-19 11:31

    SEGGER Embedded Studio仿真打断点超过两个就报错是什么原因?

    在 SEGGER Embedded Studio 上在线仿真,打断点个数不能超过2个,否则报错,请问是我工程设置问题还是仿真器问题?
    发表于 05-26 07:36

    “PitNotification”中的断点没有停止怎么处理?

    PitNotification 中设置了一个断点并运行了程序。 理论上,程序应该在断点处停止,但它没有。为什么? *程序可以在 main 函数中设置
    发表于 05-19 07:02