私は2つの異なる方法を使用してLinux USBドライバがどのように機能するかを分析しました。
- 出力を確認してください
usbmon
。これは「オンライン」で送信される内容の16進ダンプビューです。 - カーネルドライバモジュールソースにステートメントを追加し、
printk()
それをカーネルに再ロードします。
cat /sys/kernel/debug/usb/usbmon/1u
それぞれとを通じてこれらのメソッドの出力を取得できますcat /var/log/kern.log
。
今私が望むのは、2つのファイルをリアルタイムでマージして、printk()
ネットワーク経由で送信される16進行とインターリーブされたカーネルドライバに挿入されたログメッセージを表示できることです。たとえば、USBデータを送信することがわかっているドライバコードの先頭と末尾にステートメントを含めることができますprintk()
。usbmon
入力関数 sendImportantUSBData() // ドライバコードで printk()
0a ff bbbb ac 0993 b3332 // usbmon ログで関数を終了
sendImportantUSBData() // ドライバコードで printk()
tail
単一ファイルの最後の数行を表示することが可能であることを知っています。また、タイミングの感度とマージされた行の順序の正確さへの影響に関する関連情報を見たことはありませんが、n
ツールがいくつかのマージを実行できることも知っています。時間に敏感なログを正確にマージしたり、マージのために比較的短い時間間隔を指定したりできるmultitail
適切なツールはありますか?後者の場合、ドライバが。a)
b)
printk()
usbmon
ベストアンサー1
どうですかtail -F /sys/kernel/debug/usb/usbmon/1u /var/log/kern.log
?これにより、2つのファイルの出力を「追跡」し、各ファイルの出力を表示するときに短いヘッダーを印刷します。