13

Linux カーネルで出力をデバッグするより良い方法はありますか?

現在、コードを散らかしています:

printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ ); 

これはあまりきれいではありません。

行全体を適切#ifdefな方法で :ed する方法が必要です。

4

2 に答える 2

21

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.

于 2011-02-14T14:00:16.657 に答える
2

これが迅速なデバッグ用である場合は、printk() だけでうまく機能します。

これが本番環境でのデバッグ用である場合は、おそらく pr_debug() を使用して、実行時にメッセージを有効にできるようにします。

とにかく、通常は ("%s: xxx", func ) で十分です。これらのファイル名と行番号はすぐに煩わしくなります。これが、「標準的な」解決策が見つからない理由でもあります。

于 2011-02-14T14:20:04.923 に答える