<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>嵌入式 Linux 调试 on Yun 的个人博客</title><link>https://yun7211.github.io/series/%E5%B5%8C%E5%85%A5%E5%BC%8F-linux-%E8%B0%83%E8%AF%95/</link><description>Recent content in 嵌入式 Linux 调试 on Yun 的个人博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 18 May 2026 11:30:00 +0800</lastBuildDate><atom:link href="https://yun7211.github.io/series/%E5%B5%8C%E5%85%A5%E5%BC%8F-linux-%E8%B0%83%E8%AF%95/index.xml" rel="self" type="application/rss+xml"/><item><title>Kernel panic 排查记录模板</title><link>https://yun7211.github.io/embedded-linux/debug-performance/kernel-panic-debugging/</link><pubDate>Mon, 18 May 2026 11:30:00 +0800</pubDate><guid>https://yun7211.github.io/embedded-linux/debug-performance/kernel-panic-debugging/</guid><description>&lt;h2 id="先保留现场"&gt;先保留现场
&lt;/h2&gt;&lt;p&gt;Kernel panic 出现时，第一件事不是立刻改代码，而是把现场保存下来。串口完整日志、内核版本、设备树版本、启动参数、复现步骤和最近改动都应该保留。&lt;/p&gt;
&lt;p&gt;最小记录清单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;panic 完整日志&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bootargs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Kernel commit 或版本号&lt;/li&gt;
&lt;li&gt;DTB 来源&lt;/li&gt;
&lt;li&gt;根文件系统版本&lt;/li&gt;
&lt;li&gt;外设连接状态&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="看最后一个有效栈"&gt;看最后一个有效栈
&lt;/h2&gt;&lt;p&gt;panic 日志里最有价值的是调用栈和触发点。先找到 &lt;code&gt;Call trace&lt;/code&gt;，再判断是空指针、非法地址、BUG_ON、oops 还是 watchdog。&lt;/p&gt;
&lt;p&gt;如果地址已经符号化，可以直接看函数名；如果没有符号，需要保留未裁剪的 &lt;code&gt;vmlinux&lt;/code&gt;，配合 &lt;code&gt;addr2line&lt;/code&gt; 定位源码行。&lt;/p&gt;
&lt;h2 id="区分必现和偶现"&gt;区分必现和偶现
&lt;/h2&gt;&lt;p&gt;必现问题优先缩小配置和输入。偶现问题要关注并发、时序、内存越界、栈溢出和硬件状态。&lt;/p&gt;
&lt;p&gt;对于偶现问题，日志要尽量包含时间戳，并在关键路径加轻量日志，避免日志本身改变时序太多。&lt;/p&gt;
&lt;h2 id="复盘问题来源"&gt;复盘问题来源
&lt;/h2&gt;&lt;p&gt;定位后还要记录根因类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设备树配置错误&lt;/li&gt;
&lt;li&gt;驱动资源申请失败后清理不完整&lt;/li&gt;
&lt;li&gt;中断上下文误用阻塞接口&lt;/li&gt;
&lt;li&gt;DMA buffer 或 cache 同步问题&lt;/li&gt;
&lt;li&gt;用户态输入触发内核边界缺陷&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="小结"&gt;小结
&lt;/h2&gt;&lt;p&gt;Kernel panic 排查的关键是保留证据、定位栈、区分复现类型，再把根因沉淀成可检查的清单。&lt;/p&gt;</description></item></channel></rss>