qc7000ドライバ(qca_spi.c)を使用してデバイスをデバッグしようとしています。
便利なnetdev_dbgメッセージがたくさん含まれています。
これらのメッセージが保存されているログにどのようにアクセスできますか?
答え1
短い答え:これらの印刷は常に/ proc / kmsgに表示される必要があります。
$ cat /proc/kmsg
来て確認してみてください。各エントリは隣のログレベルも指定するため、「<7>」で始まるエントリを見つけます。
追加情報:netdev_dbg() は include/linux/netdevice.h で定義されたマクロで、最終的に netdev_printk(KERN_DEBUG, ...) を呼び出します。これにより、KERN_DEBUGログレベルのprintk()呼び出しが発生します。各システムには、dmesgに印刷するレベルと無視するレベルを定義する独自のprintk設定があります[1]。それにもかかわらず、すべてのprintk呼び出しはログレベルに関係なく/ proc / kmsgとして印刷されます。
次のコマンドを実行してdmesg設定を確認できます。
$cat /proc/sys/kernel/printk
このファイルの出力には、現在、デフォルト、最小、および開始時間のデフォルトレベルの4つの値があります。あなたは「現在」に興味があります。私の場合、再起動後のデバッグレベルは3(KERN_ERR)でした。これは、レベル> = 3のすべてのprintk呼び出しが無視されることを意味します。
$cat /proc/sys/kernel/printk
3 4 1 7
これをさまざまな方法で変更できます。私はdmesg -nを使用し、デバッグレベルのprintk呼び出しを印刷する必要がある「8」に設定しました。
$sudo dmesg -n 8
$cat /proc/sys/kernel/printk
8 4 1 7
これにより、dmesgでデバッグ印刷を表示できます。
メモ:
- KERN_DEBUGは「7」なので、現在のログレベルを「8」に設定する必要があります。
- dmesg設定を上書きできる他の設定があるため、/proc/kmsgはどのような場合でもデバッグメッセージを表示するのに最適な選択でなければなりません。
- 「cat /proc/kmsg」を呼び出すたびにログがフラッシュされるため、2番目の呼び出しでは、新しいメッセージが到着していない場合はログが空になる可能性があります。
[1] printkと印刷レベルに関する追加情報:https://elinux.org/Debugging_by_printing#Log_Levels