完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在程序中设置断点,但是运行到断点处程序没有停止,可以确定设置断点的语句是有运行的。
断点的符号也不正常,如下图: 在另外一个工程设置断点可以正常使用,断点符号正常,如下图: 此外,在这个工程中运行这句程序:uint8_t re= 72;运行后查看表达式,re的值是0。而同样的语句放在其他工程文件,re的值是正常的72。 求助,这是什么原因引起的? |
|
相关推荐
5个回答
|
|
这个问题解决了,在调试配置—>源—>源的查找路径中选恢复缺省值,就可以使用断点了。
利用断点可以发现,最开始re的值是72,赋值是成功的,但是后来被修改了,是在Tx_buffer[1]=0x95;这个语句执行时被修改的。 现在的问题是,为什么执行其他变量的赋值语句,会影响到re的值?
最佳答案
|
|
|
|
注意前面那串十六进制数,那是编译成机器码时该指令所在的地址。你之前的断点明显没有被编译,可能是你更改代码后没有全部构建,或者是编译器优化导致的
|
|
|
|
healson2001 发表于 2018-7-23 01:40 有两个可能,第一个,你可能用了看门狗,程序复位了,导致数据被清零。第二个,有可能是你申请的变量过大导致的堆栈指针溢出,修改了你的变量值。 当然也有第三种可能,就是程序在编写的时候有必要的关联和影响,你把Tx_buffer[1]=0x95这句换成别的,估计re的值可能也会被修改的。 |
|
|
|
blnocyyp2002 发表于 2018-7-23 01:49 十分感谢,问题解决了。re=0不是在Tx_buffer[1]=0x95这句发生的,而是在for(i=0; i<128+10; i++) {*pixel_pt++ = 0;}这句发生的。pixel_pt数组只定义的长度是128,但是赋值时写成了128+10,导致地址在pixel_pt之后的re也受到影响。 |
|
|
|
healson2001 发表于 2018-7-23 01:55 很好! |
|
|
|
只有小组成员才能发言,加入小组>>
请问一个迭代法图形二值化的程序代码把宽改成240之后整个屏幕不显示是什么原因?
2649 浏览 0 评论
2637 浏览 1 评论
1873 浏览 1 评论
2028 浏览 2 评论
2593 浏览 2 评论
682浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 16:01 , Processed in 0.799197 second(s), Total 87, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号