1. 程式人生 > >VS2005 vs2008 vs2010 除錯時打不了斷點總結

VS2005 vs2008 vs2010 除錯時打不了斷點總結

VS程式設計除錯時,偶爾會遇到打不了斷點的情況,根據一路下來的經驗,總結一下,以免以後遇到這種情況可以再參考下。(注:此文章相當於自己的學習筆記,以供自己今後參考,希望不要給各位帶來壞的示範,有錯誤請多指正)

本文截圖使用的VS軟體為VS2005,vs2008 2010等類同

1、先確定不是低階原因造成的打不了斷點(如某一檔案程式碼漏編譯等情況,則此檔案打不了斷點)

2、若一開始時可除錯,但改動一點程式碼後不能打斷點除錯,則:

工具->選項->除錯下的“要求原始檔與原始版本完全匹配“的鉤去掉即可打斷點了(也可能從別人那裡拷過來或者網上下載的程式碼,程式碼中某些字元(漢字等)亂碼時,也可以用此方法解決亂碼的問題,若不用此方法,則將程式碼儲存為不亂碼的格式,則又可以打斷點了)




3、若解決方案配置為Release模式,則需要進行相應的設定。

 解決方案配置可在此處看到:



更改此配置在:生成->配置管理器      裡面


為Release模式需要進行以下幾個步驟的設定

      (1)、選中工程,右擊,點選屬性,得到如下頁面,將除錯資訊格式改成如圖所示或者”用於“編輯並繼續”的程式資料庫(/ZI)“皆可。

除”禁用“外的另外兩種格式(C7相容等)不知道是否也可以?


    (2)、接著上面的視窗,將  優化  選項設定為禁用(保證被編譯到的所有程式碼可以打斷點,否則有可能同一檔案中,有部分程式碼不能打斷點)



    (3)、按照下圖將生成除錯資訊設定成  是(/DEBUG)



完成以上幾個步驟的設定基本上可以解決打不了斷點的情況了

需要注意的是,設定完成後需要  點選 "重新生成解決方案" 或者刪除先前生成的pdb檔案點選"生成解決方案即可"

4、若使用的是COM元件,則重新生成的DLL需要重新註冊com,否則也打不了斷點

5、若要除錯動態庫(靜態庫?),則有多種方法:

    1)、將要除錯的dll工程和exe工程放在同一個解決方案下,直接單步除錯即可進入相應函式

    2)、在要除錯的函式中MessageBox,待彈出對話方塊後,附加到相應的exe程式即可

    3)、工程右鍵->屬性->配置屬性->除錯->命令引數,填上呼叫此dll的exe全路徑名(如D:\a.exe),打上斷點,F5執行即可

    4)   、若dll/lib跟exe不在同一個工程也是可以除錯的,只要保證lib/dll生成時間是最近的(具體時間要問微軟了),如果發現除錯

               進不去庫裡面的程式碼,而庫程式碼未曾改過,則可以重新生成下庫,一般就可以進去了