The use method of afxDump and TRACE
#ifdef_DEBUG
afxDump<<"DumpingmyPerson:\n";
myPerson->Dump(afxDump);
afxDump<<"\n";
#endif
1)TRACE();/TRACE0();/TRACE1();/TRACE2();/TRACE3();:其用法和C中的printf()函數類似;TRACEn()和TRACE()的區別是前者使用的資源較少,前者中n表示所帶參數的個數。使得TRACE可用:Tools-MFCTracer-Enablingtrace。
2)AfxDump();//其用法和C++中的cout類似;
3)AfxDump(constCobject*obj);會輸出obj的相關資訊(屬性的值)。
4)MessageBox();/AfxMessageBox();
#ifdef_DEBUG
afxDump<<x;
#endif
將結果顯示在OutPut,不能在Release狀態下。Ctrl+F5似乎無效,F5可以。
afxDump.SetDepth(1);
設定深度,如maps,arrays,它只打出有幾個可元素,我們用上面的這個函數,它會將所有的內容打出來.
#ifdef_DEBUG
chartest[]="0123456789\n";
afxDump.HexDump("--",(BYTE*)test,11,6);
#endif
結果為:
--303132333435
--363738390A
第一個參數,行首的打頭字元.
第二個參數,要打的內容.
第三個參數,要打的元素個數.
第四個參數,每行的個數.
4,TRACE(...),TRACE0,TRACE1,TRACE2,TRACE3也只能在調試時用注意打字串時有長度限制,包括結束符在內,不超過512個字元.
5.在Debug狀態下
F9設定斷點後,F5到下一個斷點,F10下一行,F11進入函數(包括系統函數)內部,Shift+F11出來.
F5後,Debug菜單有相應的功能表項目.
F5後,View->DebugWindow的子功能表項比較有用.
Watch查看你指定的變數
variables顯示auot變數,local變數,this的值
memory顯示指定記憶體位址儲存的值
callstack顯示函數調用關係
registers寄存器的值
Disabblemble彙編代碼
其實Release下也可調試F5
Alt+f7工程設定
c\c++GenerateBrowseinfo選上.
Debuginfo選Progamedatabaseforeditandcontinue
LinkGeneratedebuginfo選上
Linkincrementally選上
Come from http://blog.csdn.net/banward/archive/2008/09/25/2978680.aspx