22

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");
    ...

kern.logで、ファイル/ proc / net / madwifi / ath1 / fractel_configを(もちろん時間の経過とともに)上書きしようとすると、次のメッセージが表示されます。

[ 8671.924873] proc write 
[ 8671.924919] 

説明はありますか?

4

7 に答える 7

27

多くの場合KERN_DEBUG、レベルメッセージはフィルタリングされ、ログレベルを明示的に上げる必要があります。を調べると、システムのデフォルトが何であるかを確認できます/proc/sys/kernel/printk。たとえば、私のシステムでは:

# cat /proc/sys/kernel/printk
4       4       1       7

最初の数字は、コンソールのログレベルがであることを示していますKERN_WARNING(詳細については、 proc(5)のマニュアルページを参照してください)。これはKERN_NOTICE、、、KERN_INFOおよびKERN_DEBUGメッセージがコンソールからフィルタリングされることを意味します。ロギングレベルまたは冗長性を高めるには、次を使用します。dmesg

$ sudo dmesg -n 7
$ cat /proc/sys/kernel/printk
7       4       1       7

ここで、レベルを7(KERN_DEBUG)に設定すると、すべてのレベルのメッセージがコンソールに表示されます。これを自動化するには、カーネルブートパラメータにloglevel=Nignore_loglevelを追加します。ここで、Nは、コンソールに送信するログレベル、またはすべてのカーネルメッセージをコンソールに出力します。

于 2010-12-23T17:16:28.017 に答える
13

ディストリビューションによって異なりますが、多くの場合klogd(8)、カーネルからメッセージを取得するために使用され、ファイル(/var/log/dmesgまたは/var/log/kernel)またはを介してシステムログにログを記録しsyslog(3)ます。後者の場合、ログエントリが終了する場所は、の構成によって異なりますsyslogd(8)

このコマンドに関する注意事項dmesg:カーネルメッセージは循環バッファーに格納されるため、大量の出力が上書きされます。

于 2010-12-23T12:00:33.147 に答える
6

コマンドで出力を取得しますdmesg

于 2010-12-23T11:52:21.883 に答える
4

dmesgは、カーネルからすべてのメッセージを出力します。目的のメッセージを見つけるのは難しいでしょう。dmesgとgrepの組み合わせを使用し、すべてのメッセージでドライバー固有のラベルを使用することをお勧めします。これにより、不要なメッセージをすべて簡単に削除できます。printk

printk("test: hello world")

dmesg | grep test
于 2010-12-27T05:44:53.523 に答える
1

Ubuntu11.10および10.04LTSでこの問題が発生しました。前者では、/ etc / rsyslog.d / 50-default.confを編集し、「sudoservicersyslogrestart」を使用してrsyslogを再起動してrsyslogdを再起動しました。それからそれは働いた。

Ubuntuはsyslogdではなく* r *syslogdを使用することに注意してください。

于 2012-01-19T16:31:16.237 に答える
0

KERN_DEBUGよりも高いレベル(たとえば、KERN_INFO)を試すことができます。構成によっては、優先度の最も低いメッセージが表示されない場合があります。

于 2010-12-23T15:57:25.500 に答える
0

CentOS(少なくともCentos 6.6)では、出力は/ var / log/messagesになります

于 2014-12-07T16:33:43.900 に答える