apo*_*020 20 linux ubuntu linux-kernel printk
我正在调试linux的驱动程序(特别是ubuntu服务器9.04),代码中有几个printf语句.
我在哪里可以查看这些陈述的输出?
编辑1:我要做的是使用proc文件系统写入内核.打印代码是
static int proc_fractel_config_write(struct file *file, const char *argbuf, unsigned long count, void *data)
{
printk(KERN_DEBUG "writing fractel config\n");
...
Run Code Online (Sandbox Code Playgroud)
在kern.log中,当我尝试覆盖文件/ proc/net/madwifi/ath1/fractel_config(当然具有不同的时间)时,我看到以下消息.
[ 8671.924873] proc write
[ 8671.924919]
Run Code Online (Sandbox Code Playgroud)
任何解释?
ctu*_*fli 25
很多时候KERN_DEBUG级别消息被过滤,您需要显式提高日志记录级别.您可以通过检查查看系统默认值/proc/sys/kernel/printk.例如,在我的系统上:
# cat /proc/sys/kernel/printk
4 4 1 7
Run Code Online (Sandbox Code Playgroud)
第一个数字显示控制台日志级别KERN_WARNING(有关更多信息,请参阅proc(5)手册页).这意味着KERN_NOTICE,KERN_INFO和KERN_DEBUG消息将从控制台进行过滤.要提高日志记录级别或详细程度,请使用dmesg
$ sudo dmesg -n 7
$ cat /proc/sys/kernel/printk
7 4 1 7
Run Code Online (Sandbox Code Playgroud)
在这里,将级别设置为7(KERN_DEBUG)将允许所有级别的消息显示在控制台上.要自动执行此操作,请将loglevel=N添加到内核引导参数,其中N是要进入控制台的日志级别,或者ignore_loglevel将所有内核消息打印到控制台.
Blr*_*rfl 12
它取决于分布,但许多用于klogd(8)从内核获取消息,并将它们记录到文件(有时/var/log/dmesg或/var/log/kernel)或通过系统日志记录syslog(3).在后一种情况下,日志条目最终将取决于配置syslogd(8).
关于dmesg命令的一个注意事项:内核消息存储在循环缓冲区中,因此将覆盖大量输出.
您将使用该命令获得输出 dmesg
小智 5
dmesg输出来自内核的所有消息。找到您想要的消息会很困难。最好使用dmesg和grep组合,并在所有消息中使用特定于驱动程序的标签printk。这将轻松消除所有不需要的消息。
printk("test: hello world")
dmesg | grep test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40445 次 |
| 最近记录: |