Windows程式調試-學習筆記

來源:互聯網
上載者:User

參考書目 《Windows程式調試》 Everett N. McKay   Mike Woodring著    何健輝 許俊娟 董偉  譯

第2章 編寫便於調試的C++代碼

1、預先處理的名字不在符號表裡,所以不能用調試工具來檢查預先處理常量

2、malloc只分配記憶體,new除此之外,還會調用物件建構函數;free、delete對比亦然

3、C++輸入輸出資料流的任何問題都可以在編譯時間刻檢測出來,而且輸入輸出可以重載在任何C++類中

4、把所有的共用定義、聲明放在標頭檔裡,不要在.cpp檔案裡看到extern關鍵字

5、/GZ編譯選項,自動變數在調試的時候會被初始化

6、由於大多數建構函式都能把它們的對象初始化到一個良好定義的狀態,通常不需要對對象初始化。例如CString strTemp;

7、float的最大誤差為FLT_EPSILON宏定義,double的為DBL_EPSILON   兩者均在float.h內定義

8、建構函式的虛函數並不像一般的虛函數,如果基類的建構函式調用了一個虛函數,調用的實際是虛函數的基類版本,而不是重載後的版本。否則,如果基類調用了衍生類別版本的虛函數,就會引起存取異常,因為此時還沒有構造基類的資料成員。如果建構函式真的需要虛函數,就使用單獨的初始化函數好了。

第3章 使用斷言

1、宣告失敗的,一定不正確;但是斷言成功的不一定正確。斷言無法替代測試。

2、自訂斷言,打log、StackWalk函數在建立的自訂斷言宏的訊息中顯示調用棧(參考網上下載的callstacktest)

3、C運行時刻函數庫和MFC斷言宏顯示一個斷言失效的訊息框,但這種預設的行為可以通過_CrtSetReportMode被改變,輸出到訊息框、輸出視窗、檔案或者任何這些選項的組合中

第4章 使用跟蹤語句

1、visual C++輸出視窗的緩衝區大小有限制,因此如果跟蹤訊息資料產生的速度超過了輸出視窗處理的速度,那麼緩衝區滿了資料就會丟失。解決方案是在高峰區添加Sleep(100)類似的休眠代碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.