随笔 - 733  文章 - 2  评论 - 12  阅读 - 92万

神奇的调试值“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 
 
posted on   杰瑞鼠  阅读(1635)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2016-12-13 STM32串口
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示