VS 除錯斷點命中

2021-08-13 11:40:58 字數 1109 閱讀 3233

在使用vs開發時,有時斷點會無法進入,特別是在乙個專案中引用另乙個類庫專案時。如下圖。

我在乙個專案中引用了自定義的控制項mycontrol類庫,但在使用時發現,有些地方還需要調整,比如這裡我需要增加乙個guid作為特殊標識,並輸出以供測試。但是當我將這段**加入進去後,按f5執行程式時,這段**的斷點沒有如預期的進入。

注:無法進入的斷點是空心的,可以進入的斷點是實心的。

於是將滑鼠定位到了斷點的位置,提示如上圖。會發現這是因為源**與原始版本不同造成的。這時我們可以按照提示中所說的方法來解決試試。

解決方法1:右擊斷點->位置->允許源**與原始版本不同《喎�"" target="_blank" class="keylink">vc3ryb25npjxzdhjvbmc+oapi58/czbw8l3n0cm9uzz48l3a+cjxwpijxotli0qru2rfh1mvq0ne0zkzpwtpsu/e2z7xjo6yyu8i7u+ho3reoupzqwrt6wusppgjypgo8l3a+cjxwpjxicj4kpc9wpgo8cd48aw1nihnyyz0="" alt="\">

但是在實際執行時會發現,此方法並不一定靠譜,因為除錯時斷點自動往下跳了。這樣一來,斷點同樣會無法進入。

解決方法2:工具->選項->除錯->常規->禁用要求原始檔與原始版本完全匹配。如下圖

這時再執行,斷點已經可以正常進入了。

解決方法3:重新生成解決方案或者先清理解決方案再生成解決方案

這時再執行,斷點也可以正常進入。

那麼為什麼會造成這種情況呢?這時因為除錯時使用的是pdb(program database)檔案,而當我們在類庫中修改**後,由於沒有重新編譯,會使用上次的pdb檔案,這樣就造成了原來的pdb和新的**檔案不匹配,自然除錯時也就無法正確進入斷點。

再有前面提到,有時斷點會跳到其他的位置,是因為斷點是定位在**的行上的,而pdb檔案中記錄了**的行數,但是pdb檔案卻沒有更新,所以當我們強行將斷點處的**設定"允許源**與原始版本不同"時,如果依舊使用上一次的pdb檔案,自然斷點的行數就定位到了上次記錄的**行數,所以斷點就會往後跳了。

VS 除錯斷點命中了,程式無法再斷點處中斷

無法命中處理 1.首先確認一下,程式的dll與原始碼是否一致,可以編譯之後再進行 2.確認是否有公共的檔案儲存常用的dll,導致程式沒有走最新編譯的dll 3.vs程式除錯時會用到 pdb檔案,是否dll是最新的但是 pdb檔案不是最新的,刪掉 pdb檔案 上述問題都確認沒有問題,但是斷點可以命中,...

斷點無法命中

1 刪除工程檔案下bin與obj資料夾裡的全部檔案。這時後再進行除錯。如果步驟1不能解決問題,可以再做下面步驟2 3然後再除錯試一試。2 debug options and settings debugging general 右邊的 require source files to exactly ...

vs除錯無法進入斷點

有時候,我們在用vs除錯的時候,會出現斷點無效。如下圖 第一反應,要看想一下是不是在debug下。如果在release下,請參考我另篇文章 怎麼在release下除錯 如果是在debug下 1.檢查工程配置是否設定正確。c general debug information format progr...