首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印输出在内核中的位置是什么?

打印输出在内核中的位置是什么?
EN

Stack Overflow用户
提问于 2010-12-23 19:42:03
回答 7查看 46.4K关注 0票数 22

我正在调试linux (特别是ubuntu服务器9.04)的驱动程序,代码中有几个printf语句。

在哪里可以查看这些语句的输出?

EDIT1:我想要做的是使用proc文件系统写入内核。打印代码为

代码语言:javascript
复制
static int proc_fractel_config_write(struct file *file, const char *argbuf, unsigned long count, void *data)
{
    printk(KERN_DEBUG "writing fractel config\n");
    ...

在kern.log中,当我尝试覆盖文件/proc/net/madwifi/ath1/fractel(当然,时间不同)时,我会看到以下消息。

代码语言:javascript
复制
[ 8671.924873] proc write 
[ 8671.924919] 

有什么解释吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-12-23 20:00:33

这取决于发行版,但很多都使用klogd(8)从内核获取消息,并将它们记录到一个文件(有时是/var/log/dmesg/var/log/kernel)或通过syslog(3)记录到系统日志中。在后一种情况下,日志条目的结束位置将取决于syslogd(8)的配置。

关于dmesg命令需要注意的一点是:内核消息存储在循环缓冲区中,因此大量输出将被覆盖。

票数 13
EN

Stack Overflow用户

发布于 2010-12-24 01:16:28

很多时候,会过滤KERN_DEBUG级别的消息,您需要显式地提高日志记录级别。您可以通过检查/proc/sys/kernel/printk来查看系统默认值。例如,在我的系统上:

代码语言:javascript
复制
# cat /proc/sys/kernel/printk
4       4       1       7

第一个数字显示控制台日志级别为KERN_WARNING (有关更多信息,请参见proc(5)手册页)。这意味着将从控制台过滤KERN_NOTICEKERN_INFOKERN_DEBUG消息。要提高日志记录级别或详细程度,请使用dmesg

代码语言:javascript
复制
$ sudo dmesg -n 7
$ cat /proc/sys/kernel/printk
7       4       1       7

在这里,将级别设置为7 (KERN_DEBUG)将允许所有级别的消息出现在控制台上。要自动执行此操作,请将loglevel=N添加到内核引导参数中,其中N是您希望转到控制台或ignore_loglevel以将所有内核消息打印到控制台的日志级别。

票数 27
EN

Stack Overflow用户

发布于 2010-12-23 19:52:22

您将使用命令dmesg获得输出

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4518420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档