程式除錯總結 04 18

2021-05-25 02:26:43 字數 465 閱讀 7026

1.現象:程式中呼叫dll中的某個函式f,但是斷點跟蹤,卻呼叫了函式g而不是f

經除錯,在call eax這條彙編語句中,查出函式位址就是g的位址;而f和g的位址只差4個位元組;

於是檢查dll標頭檔案,找出了原因:dll和h檔案不匹配

2.現象:某個物件內有乙個map成員,後來在某個地方遍歷該map時丟擲了異常。

經除錯,發現該map已經被損壞,內部的頭指標為0;

於是在該物件的map成員前後各加了乙個char變數,再除錯,當然還是拋異常,但是char變數都沒有被修改,

排除了記憶體越界寫壞的可能;

再測試。。在建構函式中將char變數設定為'a',析構函式中設定為'b';

發現當丟擲異常的時候,char變數值為'b';這顯然是乙個已經析構了的物件;

原因:該類物件使用了物件池,當物件已經被歸還給物件池之後(析構、但記憶體不會歸還給os),在程式其它地方仍然還在被引用,所以出現了異常。

程式除錯總結

基本上寫程式大部分時間都是在除錯上面,寫 也只是占用一部分時間。量比較大情況下或者一些隱蔽的bug,一般肉眼也很難看出來,所有除錯 是考驗乙個程式設計師的基本功和能力,是區分初級程式設計師和高階程式設計師的重要能力之一。大多數整合開發軟體的除錯方法都是大同小異,入門以vc6.0這個老古董的除錯開始就...

程式除錯方法總結

在應用程式開發和除錯過程中,經常遇到這樣的問題 由於某個變數的值被錯誤地改變,導致程式出錯甚至crash,如果程式執行在多執行緒環境,或者程式邏輯非常複雜,我們想跟蹤這個變數的變化將會非常困難。有沒有辦法能夠在除錯過程中使程式自動在改變變數處斷點呢?這樣我們就能一一檢視該變數值的改變情況,從而發現到...

串列埠程式除錯總結

除錯能否成功一方面在於方法,另外很大程度上取決於個人的經驗。但是在除錯的時候,通常要遵循以下一些原則 1 確定錯誤的性質和位置 分析 思考與錯誤徵兆有關的資訊,避開死胡同。除錯工具只是一種輔助手段,充分利用vc自帶的除錯工具可以幫助思考,但不能代替思考。通常避免使用 試探法,最多只能將它當作最後的手...