Linuxツリーのデバイスドライバソースで、私はdev_dbg(...)
とdev_err(...)
を見ました。どこでログに記録されたメッセージが見つかりますか?dev_dbgはどこにログを書き込みますか?
#define DEBUG
を追加することを推奨します。 referenceには動的デバッグとデバッグが含まれていますが、私は迷ってしまいました。
Linuxツリーのデバイスドライバソースで、私はdev_dbg(...)
とdev_err(...)
を見ました。どこでログに記録されたメッセージが見つかりますか?dev_dbgはどこにログを書き込みますか?
#define DEBUG
を追加することを推奨します。 referenceには動的デバッグとデバッグが含まれていますが、私は迷ってしまいました。
dev_dbg()
は、コンパイルフラグに応じてdynamic_dev_dbg()
,dev_printk()
、またはno-opに展開されます。 vprintk_emit()
を呼び出す
#if defined(CONFIG_DYNAMIC_DEBUG)
#define dev_dbg(dev, format, ...) \
do { \
dynamic_dev_dbg(dev, format, ##__VA_ARGS__); \
} while (0)
#elif defined(DEBUG)
#define dev_dbg(dev, format, arg...) \
dev_printk(KERN_DEBUG, dev, format, ##arg)
#else
#define dev_dbg(dev, format, arg...) \
({ \
if (0) \
dev_printk(KERN_DEBUG, dev, format, ##arg); \
})
#endif
dynamic_dev_dbg()
とdev_printk()
コールdev_printk_emit()
。
printk()
の場合、この非常に同じ機能がノーマルモードで呼び出されます。 dev_err()
のような残りの機能は、同じ機能に終わることに注意してください。したがって、明らかに、緩衝液は全て同じであり、すなわち、脈管内膜緩衝液である。
カーネルログレベル値(カーネルコマンドラインを介して、またはのprocfsを介して変更することができる)は、ここで特定のメッセージ、KERN_DEBUGために十分に高い場合終わりにログインメッセージが
dmesg
コマンドを実行して読み取ることができる内部バッファ。バッファ内にまだ空きがある限り、2のデータは保持されます。限定された循環型なので、新しいデータは古いデータよりも優先されます。