linux裝置驅動除錯,我們在核心中看到核心使用dev_dbg來控制輸出資訊,這個函式的實質是呼叫printk(kern_debug )來輸出列印資訊。要開啟這個開關需要下面兩步。
1、開啟除錯開關:你除錯的檔案中必然包含了,或者《linux/paltforam_device.h》,後者包含了前者,在包含此標頭檔案之前,使用#define debug 1 來開啟除錯開關:例如
#include
#include
#include
#include
#define debug 1
#include
在linux/device.h檔案中:
#define dev_printk(level, dev, format, arg...) /
printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg)
#ifdef debug
#define dev_dbg(dev, format, arg...) /
dev_printk(kern_debug , dev , format , ## arg)
#else
static inline int __attribute__ ((format (printf, 2, 3)))
dev_dbg(struct device * dev, const char * fmt, ...)
#endif
但是這個開啟了之後,也不能順利的輸出資訊,原因是printk有預設的資訊級別。
linux/kernel檔案中
#define kern_emerg "<0>" /* system is unusable */
#define kern_alert "<1>" /* action must be taken immediately */
#define kern_crit "<2>" /* critical conditions */
#define kern_err "<3>" /* error conditions */
#define kern_warning "<4>" /* warning conditions */
#define kern_notice "<5>" /* normal but significant condition */
#define kern_info "<6>" /* informational */
#define kern_debug "<7>" /* debug-level messages */
可以看到kern_debug是級別最低的。
2、修改檔案kernel/printk檔案
/* printk's without a loglevel use this.. */
#define default_message_loglevel 4 /* kern_warning */
/* we show everything that is more important than this.. */
#define minimum_console_loglevel 1 /* minimum loglevel we let people use */
#define default_console_loglevel 8 /* anything more serious than kern_debug */
其中default_console_loglevel為終端console輸出的最低級別,比這嚴重的都將輸出。原來該值為7,則除錯資訊無法輸出,修改為8則全部有輸出。
vc 除錯資訊輸出 列印除錯資訊
1.cdumpcontext 該類沒有基類。這個類支援面向流的診斷輸出,以人能夠閱讀的文字。該類過載了 操作符。afxdump是乙個預宣告的cdumpcontext物件,可以方便使用。該物件只在mfc的debug版中有效。可以將調式資訊輸出到除錯輸出視窗或除錯終端。example for afxdu...
如何檢視Linux核心輸出的除錯資訊
第一點需要澄清 我使用的環境是嵌入式linux,並非桌面版linux,檢視核心輸出的除錯資訊也是為了追蹤核心子系統的執行。這可能是乙個非常小的知識點,但是還是希望自己記錄一些東西,以後也好拾起。1.如何開啟核心除錯dbg輸出 config dynamic debug y 在核心的配置選項中,我們可以...
Release下除錯資訊輸出
關於release下軟體除錯資訊輸出,主要原理,是待除錯資訊的應用程式,傳送訊息到除錯接器,然後除錯接收器再將除錯資訊接受下來,然後供使用者選擇輸出。達到分析除錯的目的。使用方法如下 1 在您的程式中定義後面的呼叫函式。2 在使用的地方呼叫這個方法。就可以在dbgview中看到除錯資訊了。dt wo...