列印除錯資訊和測試程式總結

2021-09-29 00:26:59 字數 2296 閱讀 6153

1. debug_all_en巨集開關

#define debug_all_en

#undef debug_all_en

//#define debug_all_en

2. dev_debug_printf()和dev_debug_printformat()函式的定義

void dev_debug_printf(const s8 *fmt,...)

dev_com_write(debug_port_no, (u8 *)string, length);

va_end(ap); //結束可變引數的獲取

} /*用於列印16進製制數*/

void dev_debug_printformat(u8 *str, u8 *wbuf, s32 wlen)

for(i=0; i3. debug_all_en巨集開關控制dev_debug_printf()函式的宣告

#ifdef debug_all_en

void dev_debug_printf(const s8 *fmt,...);

void dev_debug_printformat(u8 *str, u8 *wbuf, s32 wlen);

#else

#define dev_debug_printf(...)

#define dev_debug_printformat(...)

#endif

4. 定義自定義模組的除錯開關

#ifdef debug_sm_en  //自定義

#define sm_debug(format,...) dev_debug_printf("%s(%d):"format, __func__, __line__, ##__va_args__)

#define sm_debughex dev_debug_printformat

#else

#define sm_debug(...)

#define sm_debughex(...)

#endif

#ifdef debug_sm_en

#define sm_debug dev_debug_printf

#define sm_debughex dev_debug_printformat

#else

#define sm_debug(...)

#define sm_debughex(...)

#endif

debug_all_en巨集定義控制了dev_debug_printf()函式的宣告

測試程式是除錯的重要手段,掌握好測試程式的編寫非常重要,對除錯過程會有很大的幫助。

以dev_icc_test()函式為例,模板**如下所示:

void dev_icc_test(s32 nslot)

/*判斷是否有按鍵按下*/

if(dev_keypad_read(&key) > 0) //有按鍵按下

else

break;

case digital2:

ret = dev_icc_reset(nslot, rbuf);

dev_debug_printf("ret=%d\r\n", ret);

if(ret > 0)

break;

case esc:

*** = 1; //重新顯示選單

//return; //不讓退出

break;}}

}}

5.當無lcd時,可以修改disp_type的巨集定義,改為串列埠顯示,如下所示:

#define disp_type       disp_com  //disp_physic
6.硬體除錯時,要注意機器、儀器的多樣性,否則很容易陷入死迴圈;

7.使用硬體管腳來拉高、拉低,在示波器中測量時間,來做除錯用

8.串列埠列印除錯資訊時,如果時間太短,串列埠工具不能顯示出時間,可以在程式中列印timeid,來

計算時間差;

vc 除錯資訊輸出 列印除錯資訊

1.cdumpcontext 該類沒有基類。這個類支援面向流的診斷輸出,以人能夠閱讀的文字。該類過載了 操作符。afxdump是乙個預宣告的cdumpcontext物件,可以方便使用。該物件只在mfc的debug版中有效。可以將調式資訊輸出到除錯輸出視窗或除錯終端。example for afxdu...

Logcat列印除錯資訊

android logcat除錯中的v d i w e的分別代表什麼?log.v 黑色 verbose info log.d 藍色 debug info log.i 綠色 info log.w 橙色 warn log.e 紅色 error info 斷言 的除錯顏色為黑色的,任何訊息都會輸出,這裡的...

串列埠列印除錯資訊(乾貨)

上 這裡用到的是hal庫,標準庫改以下函式就行。include intfputc int ch,file f hal uart transmit huart1,temp,1,5 huart1需要根據實際配置 return ch int fgetc file f 因為上面這段 我有經常使用到,所以可以...