VS2013 MFC 中DLL鏈接庫斷點不能命中的解決方案總結

一、結論

          1. ”當前不會命中斷點,因爲還沒有爲該文檔加載任何符號”纔是要使斷點命中的要點;

          2. 方案1是前提,一定要確保DLL是最新的,頭文件包含要同步一致;

          3. 按第6條的第一步就解決問題了,其它實驗後並無效果。

二、方案

1. https://blog.csdn.net/zhangbinsijifeng/article/details/46328393

(1).要調試的dll不在調試進程的進程空間,調不到,也就是該dll還沒有被加載進exe內。即exe還沒有使用到dll呢,當然不會加載該dll到exe的進程空間中

(2).exe調用的dll,不是dll源代碼生成的最新的dll。一定要確保,exe調用的dll是dll源代碼最新生成的dll。

不理解下面這段話中的“現有項目”和“一直在用的DLL”  的具體指代    

 “第一條out了。肯定是第二條。終於想起來了。我引用了三四個項目文件,有的項目文件沒有引用“工程”上的現有項目,而是直接引用了一個一直在用的dll。把那個引用刪除,然後改成引用到現有項目。”

2. https://blog.csdn.net/cokewei/article/details/50547557

環境:VS2015解決方案中有2個項目,一個項目是C++寫的dll源代碼,另一個是C#調用這個dll測試。

問題:C#調用dll無法在dll源代碼中中斷,提示“當前不會命中斷點,因爲還沒有爲該文檔加載任何符號”

解決:

(1).首先設置dll和測試程序輸出路徑在同一個目錄下

(2).其次設置

        a 項目-〉屬性-〉配置屬性-〉C/C++-〉常規-〉調試信息格式,這裏不能爲“禁用”。   

        b項目-〉屬性-〉配置屬性-〉鏈接器-〉調試-〉生成調試信息,這裏設爲“是”。

最後很重要的一點:C#測試程序項目屬性-〉調試->啓用本機代碼調試 打勾

希望對遇到相同問題的人有用。轉載請註明出處

3. https://blog.csdn.net/madison_wang/article/details/52174876

把兩個工程的配置屬性中->調試:調試器類型由自動改爲混合

4. https://blog.csdn.net/hnyzyty/article/details/46482077

首先,設置調試工作目錄(把圖1紅框內的路徑改爲待調試的DLL所在的路徑)

之後,切記要把待調試的項目重新生成一次!

5. https://blog.csdn.net/qq_22889875/article/details/79621534

在對C#調用的C++動態庫打斷點進行調試時,斷點變爲黃色感嘆號,未進入斷點,反覆查找原因,重新生成的dll文件已經拷貝到C#相關目錄下面,但還是無法進入斷點,後來發現重新生成的動態庫的pdb文件沒有拷貝到C#相關目錄下面,對動態庫進行清理,重新生成解決方案,然後將新生成的dll和pdb同時拷貝到C#相關目錄下,調試動態庫,斷點生效,問題解決。

(release文件夾下才有PDB,而debug模式下沒有PDB,因此此方案未試驗。)

6.https://blog.csdn.net/shakspers/article/details/78978017

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章