温馨提示×

debian dmesg怎样开启调试

小樊
40
2026-10-16 05:56:29
栏目: 智能运维

在 Debian 系统中,dmesg 本身只是一个查看内核环形缓冲区(kernel ring buffer)的工具,它并不能“开启调试”,真正决定调试信息多少的是内核的日志级别(loglevel)和内核调试选项。

下面分几种常见场景说明。


一、临时开启更详细的内核日志(最常用)

1. 查看当前日志级别

cat /proc/sys/kernel/printk

输出示例:

4 4 1 7

含义:
当前级别 默认级别 最小级别 引导级别

2. 临时提高日志级别(立即生效,重启失效)

sudo dmesg -n 7
# 或
echo 7 | sudo tee /proc/sys/kernel/printk

级别说明:

  • 0 紧急
  • 1 告警
  • 2 严重
  • 3 错误
  • 4 警告(默认)
  • 5 通知
  • 6 信息
  • 7 调试(最详细)

3. 实时查看调试信息

sudo dmesg -w
# 或
sudo dmesg -W

二、开机时就开启调试(持久化)

方法 1:修改 GRUB 启动参数(推荐)

编辑:

sudo nano /etc/default/grub

找到:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

改为(示例):

GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=7"

如果是调试早期启动问题:

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=7"

更新 GRUB:

sudo update-grub

重启:

sudo reboot

三、查看特定子系统的调试信息

1. 动态调试(dyndbg,内核需支持)

# 打开某个模块的调试
sudo echo "module usbcore +p" > /sys/kernel/debug/dynamic_debug/control

查看:

sudo dmesg -w

2. 设备树 / 驱动调试

某些驱动支持:

echo 1 | sudo tee /sys/module/<driver>/parameters/debug

四、编译内核时开启调试(高级)

如果你是自己编译 Debian 内核:

make menuconfig

启用:

  • Kernel hacking
    • Kernel debugging
    • Debug printk
    • Dynamic debugging

然后:

make deb-pkg

五、常见问题

Q1:dmesg 没权限?

sudo dmesg

或:

sudo usermod -aG adm $USER

Q2:日志被 systemd 接管?

journalctl -k -f

总结一句话

dmesg 只是看日志,调试靠内核 loglevel 和内核配置

如果你能说明:

  • 是想调试 驱动 / 网络 / 启动 / USB / 文件系统 哪一类
  • 是否是 ** Debian 稳定版还是自己编译内核**

我可以给你更精确的命令。

0 踩