一、結論
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