2010-07-24 32 views
4

我正在C++/CLI中使用混合模式程序集。所有託管模式組裝的pdb在混合模式組裝中成功加載後,即使原生pdb的信息顯示在「模塊」窗格中(即在VS Debug-> Windows-> Modules中),本機dll和pdb也不會被加載。混合模式程序集不加載本地C++ pdbs的符號

我正在使用原生dll並在C++/CLI代碼中調用混合程序集中的導出函數。在這裏,函數被成功調用,但本地pdb符號未加載,本機代碼中的所有斷點都顯示爲空心圓,工具提示表示沒有爲此加載的符號。

我已經做了所有事情,將pdb放置在當前目錄中,以便啓動託管進程;刪除所有obj和調試文件夾,並同時重新編譯每個項目;我甚至使用了ChkMatch實用程序,它顯示了Exe中的符號和相應的pdb匹配。

從託管(C++/LCI混合模式)代碼調用時,是否有任何方法可以啓用本機代碼的斷點?

問候,

烏斯曼

+0

刪除標籤'winpdb'。 winpdb是一個python調試器 - 具有特別令人困惑的名稱。 – 2013-02-08 11:10:08

回答

15

混合模式調試可以碰運氣,大多錯過了。首先檢查是否已啓用混合模式調試。從C#項目,它是項目+屬性,調試,啓用非託管代碼調試複選框。接下來,混合模式調試未針對64位進程啓用。如果您在64位操作系統上運行,請確保強制.exe以32位模式運行。項目+屬性,生成選項卡,平臺目標= x86。

接下來驗證調試器查找.pdb文件的位置。在Debug + Windows + Modules窗口中,右鍵單擊該DLL並選擇「符號加載信息」。最後的喘息是在非託管代碼中使用__debugbreak()。

+1

+1爲傳奇的答案。 – 2011-01-05 23:15:24

+0

64位混合模式調試自.NET Framework 4起運行。 – empty 2016-10-03 18:13:31

相關問題