MFC 調試技巧

來源:互聯網
上載者:User
  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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.