利用内核强大的动态调试功能进行调试
1. 动态调试API
在调试过程中,不仅 pr_debug()
可以动态启用或禁用, dev_dbg()
、 print_hex_dump_debug()
和 print_hex_dump_bytes()
等API也能根据调用点动态启用或禁用。要使用动态调试功能,可在配置中添加如下内容:
# later... To disable it simply comment out the following
# line
ccflags-y += -DDYNAMIC_DEBUG_MODULE
2. 指定调试消息的打印内容和方式
内核的动态调试框架通过控制文件来决定启用哪些调试打印信息以及在这些信息前添加哪些额外信息。控制文件的位置取决于内核配置:
- 如果内核配置中启用了 debugfs
伪文件系统(通常通过 CONFIG_DEBUG_FS=y
启用),并且配置了 CONFIG_DEBUG_FS_ALLOW_ALL=y
和 CONFIG_DEBUG_FS_DISALLOW_MOUNT=n
(调试内核通常如此),则控制文件位于 /sys/kernel/debug/dynamic_debug/control
。
- 在许多生产环境中,出于安全原因,通过 <