嵌入式技术论坛
直播中

河神大人

8年用户 1518经验值
擅长:电源/新能源
私信 关注
[问答]

新手求助删掉某一行LOG_I会导致hard fault on handler?

我在雅特力的 AT32f403vgt7调试一个多线程程序
有个很诡异的现象, 当我删除一个线程其中的一条LOG_I语句编译下载后,系统就会当掉:

psr: 0x01000200
r00: 0xffffffff
r01: 0x00000008
r02: 0x40022000
r03: 0x00000001
r04: 0x00000000
r05: 0x00000000
r06: 0x00000000
r07: 0x20011b9c
r08: 0x00000000
r09: 0x00000000
r10: 0x00000000
r11: 0x00000000
r12: 0x00000000
lr: 0x0806128d
pc: 0x08061290
hard fault on handler
usage fault:
SCB_CFSR_UFSR:0x01 UNDEFINSTR
而我这个LOG_I就是个普通打印一行调试信息而已…
LOG_I("rec_time::%s", ctime(cur_time));

注意。。是删掉这个LOG_I会导致 hard fault...

求教这是什么原因

另外还想求教,rtthread studio 如何从程序入口处开始单步调试。。我现在点调试,程序直接就飞了。。
谢谢

回帖(3)

mintsy

2023-5-17 10:14:25
应该是存在内存溢出(如数组越界操作)引起的,这个LOG_I 的内存占位,改了它也刚好不会造成死机,删了它,map表内存地址改变,修改了引起触发死机的内存数据,这个问题之前遇到过。
举报

fanB

2023-5-17 10:14:32
的确有此可能;可以对比一下前后的MAP文件;必要的话,可以再比对下删除这行代码的函数的反汇编代码。
2 举报
  • jf_93476786: DELTA台达电源维修DPS-400GB-1A服务器电源维修的资料在哪?怎么联系你,谢谢
  • jf_93476786: 怎么联系你,谢谢

河神大人

2023-5-17 10:14:40
我对比了一下两次的 system.map
区别还是比较巨大。。 0x0中断的入口地址也变了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分