Linux カーネルで出力をデバッグするより良い方法はありますか?
現在、コードを散らかしています:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ );
これはあまりきれいではありません。
行全体を適切#ifdef
な方法で :ed する方法が必要です。
Linux カーネルで出力をデバッグするより良い方法はありますか?
現在、コードを散らかしています:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ );
これはあまりきれいではありません。
行全体を適切#ifdef
な方法で :ed する方法が必要です。
Use
/* At the top of the file, before any includes */
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/printk.h>
/* in code... */
pr_devel("foobar happened\n");
as a basis (the standard practice). You can then add __FILE__
or __LINE__
to the pr_fmt
definition if you need.
これが迅速なデバッグ用である場合は、printk() だけでうまく機能します。
これが本番環境でのデバッグ用である場合は、おそらく pr_debug() を使用して、実行時にメッセージを有効にできるようにします。
とにかく、通常は ("%s: xxx", func ) で十分です。これらのファイル名と行番号はすぐに煩わしくなります。これが、「標準的な」解決策が見つからない理由でもあります。