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

    文章

    344

    浏览量

    36616
  • 在线调试
    +关注

    关注

    0

    文章

    5

    浏览量

    6516
收藏 人收藏

    评论

    相关推荐

    TC2XX/3XX多核断点设置无效的原因?

    TC2XX/3XX多核断点设置无效,请问hinghtec的多核要怎么才能被触发,(函数已经执行,但是断点没有被触发)或者如何才能进行多核调试。
    发表于 07-03 07:33

    keil 断点 执行次数设置后,出现非法变量的错误

    keil 断点 执行次数设置后,出现非法变量的错误。希望大家帮帮忙。
    发表于 06-02 19:25

    STM32C011的芯片不能IAR识别到,为什么?

    目前我在使用IAR8.5做开发,但是发现STM32C011的芯片不能IAR识别到,显示的没有这颗芯片,目前除了升级IAR版本来兼容这颗芯片外还有别的方法吗?
    发表于 05-24 07:03

    iar for stm8为什么不能用了?

    iar for stm8不能用了,求高手指点!
    发表于 05-15 06:49

    IAR调试STM32F4XX时,一下断点就出现全局变量被覆盖的情况是什么原因导致的?

    IAR调试STM32F405VG时,一下断点就出现全局变量被覆盖的情况。 //进入该函数后,单步的时候_X这个全局变量的内容被覆盖,设置的func_triggered函数地址被改变,触发
    发表于 05-11 06:52

    STM8S在IAR软件仿真Simulator怎么查看运行时间?

    STM8S 在IAR软件仿真Simulator怎么查看运行时间?在某些芯片通信时,会要求延时5us,10us,150ms等,这些延时不需要太精确,只要大概就好,但怎么在Simulator仿真里能通过断点查看,即两个断点之间的运行
    发表于 05-09 07:48

    freertos启用IAR自带插件调试时不能查看队列信息怎么解决?

    IAR平台上调试freertos,想利用IAR自带的freertos插件进行调试,但是只能看task的信息,不能看队列信息显示
    发表于 05-07 06:54

    STM8在STLINK中仿真设置断点,某些行设置不了断点是怎么回事?

    (); } 在 TIM3_CAP_IRQ()函数里某些行里设备断点设置不了,如在337行中设置断点,会自动跳到346行中,在337行和342行设置
    发表于 04-30 08:02

    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

    STM32H750不能使用IAR进行仿真是为什么?

    大家好,我现在正在使用STM32H750,使用的IDE 是IAR 现在在进行Debug的时候遇到一个问题,由于使用了QSPI-flash,现在程序可以下载,但是不能仿真,是参照CebuMX的例程写的,想请教下有没有前辈遇到过这个问题。
    发表于 04-09 08:14

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

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

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

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

    STM32G030F6PCUbe生成的TIM中断不能运行,打断点都没有进入是为什么?

    STM32G030F6PCUbe生成的TIM中断不能运行,打断点都没有进入
    发表于 03-13 06:56

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

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