神奇的调试值“DEADBEEF”
通常用于指示嵌入式系统中的软件崩溃或死锁。DEADBEEF最初用于标记尚未初始化的新分配内存区域——当扫描内存转储时,很容易看到DEADBEEF。它被ibmrs/6000系统、32位PowerPC处理器上的macos和commodoreamiga用作一个神奇的调试值。在sunmicrosystems的Solaris上,它标记释放的内核内存。在运行在Alpha处理器上的OpenVMS上,按CTRL-T可以看到DEC-Alpha SRM控制台有一个后台进程,该进程捕获内存错误,由PS标识为“BeefEater waiting On 0xdeadbeefee”。
例子:
2020-12-11 17:39:15.668 R]thread pri status sp stack size max used left tick error
-------- --- ------- ---------- ---------- ------ ---------- ---
mbtcp_te 12 suspend 0x000002c8 0x00000800 73% 0x00000001 000
Mb_RTUM_ 9 suspend 0x000000dc 0x00000800 44% 0x00000006 000
Mb_RTUM_ 8 suspend 0x0000017c 0x00000800 49% 0x00000001 000
Mb_RTUS_ 7 suspend 0x000001f4 0x00000800 30% 0x0000000a 000
tshell 20 suspend 0x00000184 0x00001000 09% 0x00000009 000
HC148_EX 6 ready 0x000000a0 0x00000200 41% 0x00000030 -02
wiz_stat 28 suspend 0x000000b8 0x00000800 16% 0x00000013 000
wiz 5 suspend 0x000000b0 0x00000200 72% 0x00000008 000
sample_L 14 ready 0x000001dc 0x00000800 43% 0x0000002e 000
sys_work 23 suspend 0x00000084 0x00000800 63% 0x00000001 000
tidle0 31 ready 0x00000060 0x00000100 53% 0x0000001f 000
timer 4 suspend 0x000000b0 0x00000200 88% 0x00000009 000
main 10 suspend 0x00000148 0x00000800 60% 0x0000000c 000
Firmware name: rtthread, hardware version: 1.0, software version: 1.0
Fault on interrupt or bare metal(no OS) environment
===== Thread stack information =====
addr: 20000bb8 data: deadbeef
addr: 20000bbc data: deadbeef
addr: 20000bc0 data: 20002510
addr: 20000bc4 data: 20003b38
。。。
addr: 20000c90 data: 080235db
====================================
=================== Registers information ====================
R0 : fffffff1 R1 : fffffff1 R2 : 00000001 R3 : deadbeef
R12: deadbeef LR : 20000be0 PC : deadbeef PSR: deadbeef
==============================================================
Bus fault is caused by imprecise data access violation
Show more call stack info by run: addr2line -e rtthread.elf -a -f deadbeef 0800701c 08006eee 080078d4 08007fac 0800383a 08023960 08006e0a 080235da