news 2026/10/30 1:50:43

IPC_LOG + DYN_DEBUG + PRINTK

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IPC_LOG + DYN_DEBUG + PRINTK

1) CONFIG_IPC_LOGGING
/ # ls -l /sys/kernel/debug/ipc_logging/4a80000.qcom,qup_uart_tx/ total 0 -r--r--r-- 1 root root 0 Jan 1 08:00 log -r--r--r-- 1 root root 0 Jan 1 08:00 log_cont / # echo tt > /dev/ttyHS1 / # cat /sys/kernel/debug/ipc_logging/4a80000.qcom,qup_uart_tx/log [ 720.203382040/ 0x33ee71cd9] DMA Tx[0x0000000000:2] : 74 74 [ 720.205881832/ 0x33ee7d859] DMA Tx[0x0000000000:2] : 0d 0a
2)CONFIG_DYNAMIC_DEBUG

mount -t debugfs none /sys/kernel/debug/ //挂载debugfs
echo -n "file xxxxxx.c +p" > /sys/kernel/debug/dynamic_debug/control //打开调试信息

参考: Linux 内核动态打印机制详解

3) printk配置

printk 是 Linux 内核里用来打印日志的核心函数‌,它会把消息写进内核环形缓冲区,再按日志级别和过滤条件分发到已注册的 console 设备(如串口、VGA 等)。‌‌

🔍 工作机制

  1. ‌写入阶段‌:printk 格式化文本后写入内核环形缓冲区(__log_buf),这一步基本总能成功,除非缓冲区被锁住或打印速度超过 CPU 处理能力。
  2. ‌输出阶段‌:console_unlock()按优先级和过滤条件,把缓冲区日志分发给所有已注册的 console 设备,由各设备的write回调真正输出到硬件。‌‌

📊 日志级别

级别数字越小越紧急,输出条件是level < console_loglevel,不是大于。‌‌

宏定义数值含义
KERN_EMERG0系统不可用
KERN_ALERT1必须立即处理
KERN_CRIT2严重错误
KERN_ERR3普通错误
KERN_WARNING4警告
KERN_NOTICE5正常但需关注
KERN_INFO6普通信息
KERN_DEBUG7调试信息

⚙️ 查看与调整

查看当前配置:cat /proc/sys/kernel/printk,输出 4 个值,依次是console_loglevel、default_message_loglevel、minimum_console_loglevel、default_console_loglevel。‌‌

  • ‌打开所有内核输出‌:echo 8 > /proc/sys/kernel/printk或dmesg -n 8
  • ‌启动时调整‌:bootargs 加loglevel=8,调试时可配合ignore_loglevel强制全部输出,但生产环境别长期开。‌‌

⚠️ 常见坑:dmesg能看到但串口看不到,多半是console_loglevel过滤掉了;KERN_DEBUG(7 级)默认不会打到普通控制台,需要用ignore_loglevel或dmesg -n 8调上去。‌‌

🔧 排查思路

  1. ‌dmesg 能看到、串口看不到‌:查console_loglevel、console 是否注册成功、串口 console 的write是否被拖住。
  2. ‌dmesg 也看不到‌:日志没进缓冲区、缓冲区被刷掉、级别设置异常,或环形缓冲区太小被冲掉。
  3. ‌调试挂死‌:先用dmesg -n 8或引导时加loglevel=8 ignore_loglevel确保信息外吐,定位后立即去掉。‌‌

对于 pr_debug 和 dev_dbg 这类 7 级调试信息,默认不会输出,可用动态调试(/sys/kernel/debug/dynamic_debug/control)或静态调试(驱动文件头加#define DEBUG)打开

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/30 1:49:54

Django + MySQL + Redis + Docker + Nginx 生产部署笔记

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/30 1:47:24

Qwen3-Coder-30B:高效代码模型新选择

Qwen3-Coder-30B&#xff1a;高效代码模型新选择 导语&#xff1a;Qwen3-Coder-30B-A3B-Instruct作为新一代代码大模型&#xff0c;凭借其305亿参数规模、256K超长上下文支持及多平台部署能力&#xff0c;为开发者带来高效智能编码新体验。 行业现状&#xff1a;代码大模型进…

作者头像 李华
网站建设 2026/10/30 1:46:51

小爱音箱DIY改造:从智能音箱到全媒体播放器的终极指南

小爱音箱DIY改造&#xff1a;从智能音箱到全媒体播放器的终极指南 【免费下载链接】xiaoai-patch Patching for XiaoAi Speakers (小爱音箱), add custom binaries and open source software. Tested on LX06, LX01, LX05, L09A 项目地址: https://gitcode.com/GitHub_Trendi…

作者头像 李华
网站建设 2026/10/30 1:43:49

2025代码生成新范式:Qwen3-Coder如何重构企业开发效率

2025代码生成新范式&#xff1a;Qwen3-Coder如何重构企业开发效率 导语 阿里通义千问团队开源的Qwen3-Coder-30B-A3B-Instruct以256K超长上下文与代理编码能力&#xff0c;将企业级软件开发效率提升40%&#xff0c;重新定义人机协同开发模式。 行业现状&#xff1a;从工具辅…

作者头像 李华