armink / CmBacktrace

Advanced fault backtrace library for ARM Cortex-M series MCU | ARM Cortex-M 系列 MCU 错误追踪库
MIT License
1.65k stars 649 forks source link

打印hardfault信息时提示栈溢出,无法完全打印 #60

Open banshanju opened 2 years ago

banshanju commented 2 years ago

如下所示:

>  msh />thread   pri  status      sp     stack size max used left tick  error
> -------- ---  ------- ---------- ----------  ------  ---------- ---
> sys_moni  30  running 0x00000048 0x00000800    04%   0x00000005 000
> tshell    20  suspend 0x00000094 0x00001000    03%   0x00000009 000
> tcp_clie   5  suspend 0x00000160 0x00000800    17%   0x00000000 000
> phy       30  suspend 0x00000094 0x00000400    14%   0x00000002 000
> tcpip     10  suspend 0x000000c8 0x00000400    20%   0x00000014 000
> etx       12  suspend 0x00000098 0x00000400    14%   0x00000010 000
> erx       12  suspend 0x00000098 0x00000400    14%   0x00000010 000
> sys work  23  suspend 0x00000060 0x00000800    04%   0x0000000a 000
> tidle0    31  ready   0x00000054 0x00000400    09%   0x0000000a 000
> main      10  suspend 0x0000009c 0x00000800    33%   0x00000007 000
> 
> Firmware name: CmBacktrace, hardware version: V1.0.0, software version: V0.1.0
> Fault on thread sys_moni 
> Error: Thread stack(20000d00) was overflow
> ===== Thread stack information =====
> ====================================
> Usage fault is caused by Indicates a divide by zero has taken place (can be set only if DIV_0_TRP is set)
> Dump call stack has an error

这是由于哪个线程的栈溢出导致的?

mysterywolf commented 2 years ago

https://club.rt-thread.org/ask/article/7132ac238001cb56.html

cubex108 commented 1 year ago

我在启用优化选项(-Os .etc)的时候也遇到这个问题 >_<

jadqin commented 9 months ago

我在启用优化选项(-Os .etc)的时候也遇到这个问题 >_<

是的,开启-Os后,saved_regs_addr需要声明为IO或volatile__