在軟體的開發過程裡,大部份時間是在做什麼呢?其實是在調試代碼,畢竟人類的思維方式是從簡單到複雜的過程,自然的認知過程也是從簡單到複雜。因此,開發軟體時,第一個版本總是先寫簡單的,然後慢慢地添加出錯處理上去,也把一些沒有想到的情況添加進去,那些沒有想到的錯誤,就叫做BUG。要根除一個軟體裡的BUG,是一件不容易的事情,不但要對這個軟體流程比較熟悉,還要對這個軟體的目標比較瞭解,還需要對這個開發平台瞭解,當然還需要不斷地測試不同的條件是否出錯。軟體的條件組合是2的N次方,所以不可能把所有組合都測試完成,只能選擇比較重要的進行測試,只要不影響軟體的使用,這個軟體就算是一款能夠掙錢的軟體了,不要希望這個軟體一點BUG都不出現,那是不現實的,或者說付出的代價也太大了,導致這個軟體的開發成本過高,公司當然是不能生存下去。因此,怎麼樣去平衡可使用性與軟體的BUG,就成為一件藝術的事情。不同的場合是不同的需求的,一定不要為了完美而完美。下面就介紹怎麼樣使用OutputDebugString來輸出調試資訊到開發平台裡。
函數OutputDebugString聲明如下:
WINBASEAPI
VOID
WINAPI
OutputDebugStringA(
__in LPCSTR lpOutputString
);
WINBASEAPI
VOID
WINAPI
OutputDebugStringW(
__in LPCWSTR lpOutputString
);
#ifdef UNICODE
#define OutputDebugString OutputDebugStringW
#else
#define OutputDebugString OutputDebugStringA
#endif // !UNICODE
調用這個函數的例子如下:
#001 //
#002 // 響應命令.
#003 // 蔡軍生 2007/09/13 QQ:9073204
#004 //
#005 LRESULT CCaiWinMsg::OnCommand(int nID,int nEvent)
#006 {
#007 // 菜單選項命令響應:
#008 switch (nID)
#009 {
#010 case IDC_CREATEBTN:
#011 //顯示一個按鈕。
#012 if (!m_hBtn)
#013 {
#014 m_hBtn = CreateWindow(_T("BUTTON"),_T("按鈕"),
#015 WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
#016 50,50,100,32,
#017 m_hWnd,(HMENU)IDC_BTN,m_hInstance,NULL);
#018 }
#019 break;
#020 case IDC_BTN:
#021 OutputDebugString(_T("按鈕按下/r/n"));
#022 break;
#023 default:
#024 return CCaiWin::OnCommand(nID,nEvent);
#025 }
#026
#027 return 1;
#028 }