有沒有更好的方法來調試Linux內核的打印輸出?Linux內核調試打印輸出?
眼下亂拋垃圾的代碼:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__);
這是不是很乾淨。
應該有一個方法,整行是#ifdef
:ed在一些不錯的方式。
有沒有更好的方法來調試Linux內核的打印輸出?Linux內核調試打印輸出?
眼下亂拋垃圾的代碼:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__);
這是不是很乾淨。
應該有一個方法,整行是#ifdef
:ed在一些不錯的方式。
使用
/* 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");
爲基礎(標準做法)。如果需要,您可以將__FILE__
或__LINE__
添加到pr_fmt
定義中。
如果這是爲了快速調試,只是printk()運行良好。
如果這是爲了在更多生產環境下進行調試,可能使用pr_debug(),因此可以在運行時啓用消息。
無論如何,(「%s:xxx」,func)通常就足夠了。這些文件名和行號很快就會變得令人討厭。這也是爲什麼你還沒有找到任何「標準」解決方案 - 因爲沒有。
也許你可以看看[這個問題](http://stackoverflow.com/questions/4943857/linux-kernel-live-debugging-how-its-done-and-what-tools-are-used/4966975#4966975) – Kevin 2011-02-14 11:54:14
凱文:謝謝,但它不是我想要的。我正在尋找一種方法來處理實際的調試打印輸出,而不是如何運行調試器。 – user616128 2011-02-14 12:20:07