[STM32F1]

程序中怎么有些行不能设置断点?

[复制链接]
2330|14
手机看帖
扫描二维码
随时随地手机跟帖
ddb_21ic|  楼主 | 2018-1-17 17:24 | 显示全部楼层 |阅读模式
例如134行,按我的理解,优化编译也不能把它优化得没有了。
怎么就不能设断点呢?
STM32F103C8 / MDK 5.23

break.png
mmuuss586| | 2018-1-17 17:48 | 显示全部楼层
优化级别设低点看看

使用特权

评论回复
评论
ddb_21ic 2018-1-17 17:55 回复TA
果然是优化的问题,不会看汇编,猜了下,是被用跳转取代了 
评分
参与人数 1威望 +2 收起 理由
ddb_21ic + 2
捉虫天师| | 2018-1-17 23:02 | 显示全部楼层
被优化掉了吧,或者优化的串行了

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
ddb_21ic + 2
kingkits| | 2018-1-18 11:35 | 显示全部楼层
pack_read_time是不是定义成byte 型变量了,如果是,这段代码就被整个优化掉了

使用特权

评论回复
colin2135| | 2018-1-18 11:57 | 显示全部楼层
pack_read_time如果不会大于500,那肯定会被优化掉,即使优化等选成最低也进不去。

使用特权

评论回复
dingbo95| | 2018-1-18 12:19 | 显示全部楼层
pack_read_time设置的问题,或者优化等选成最低也进不去。

使用特权

评论回复
huahuagg| | 2018-1-18 14:09 | 显示全部楼层
你往后面搞一点试试看,可以不

使用特权

评论回复
闲云浩海| | 2018-1-18 16:05 | 显示全部楼层
如果pack_read_time永远不会大于500,也就是if语句永远不可能成立的话,是打不了断点的。

使用特权

评论回复
LianBinbing| | 2018-1-18 16:12 | 显示全部楼层
未编译到,可能被优化了,降低优化试试

使用特权

评论回复
jiekou001| | 2018-1-18 21:20 | 显示全部楼层
应该是这个函数里面含有太多的行,所以这样的应该不行吧。

使用特权

评论回复
jiekou001| | 2018-1-18 21:21 | 显示全部楼层
我不知道如果执行到断点是个函数,系统会如何,你也不确定这个函数的哪一行停下,还是执行完,,甚至这个函数内部是否有很多被优化的地方。

使用特权

评论回复
publicrtos| | 2018-1-20 09:02 | 显示全部楼层
本帖最后由 publicrtos 于 2018-1-20 09:28 编辑

这个函数无参数无返回值,调用的地方不止一个,如果优化等级太高的话,就会把多个调用的地方优化成一个。功能不变,但是单步执行顺序看起来变了

使用特权

评论回复
linqing171| | 2018-1-20 13:28 | 显示全部楼层
134行,143行,还有函数后的另外一个地方,都是相同的代码,都是执行相同的代码,然后返回,而且不用再回来。
他们都被编译器给合并了。

使用特权

评论回复
评论
ddb_21ic 2018-1-26 09:13 回复TA
是的,被合并了,应该是个条件跳转指令 
评分
参与人数 1威望 +5 收起 理由
ddb_21ic + 5
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:夏商周秦汉,唐宋元明清 历史上的王朝更替,不断的在示波器上重现,缺的就是个Trigger Signal

105

主题

1105

帖子

3

粉丝