[英]Cannot Debug Unmanaged Dll from C#
我有一個用C++
編寫並從C#
應用程序調用的DLL。 DLL
是非托管代碼。
如果我將帶有post build事件的DLL
及其.pdb
文件復制到C#
app的調試執行dir
我仍然無法點擊我放入DLL
代碼的任何斷點。 斷點附有一條消息,稱“沒有為此文檔加載符號”。
還有什么辦法可以在dll
源代碼中進行調試?
我有“ Tools
- > Options
- > Debugging
- > General
- >僅Enable
我的代碼”已禁用。 DLL
正在使用“運行時跟蹤和禁用優化(/ ASSEMBLYDEBUG)”編譯,並生成調試信息為“是(/ DEBUG)”
要調試C ++ DLL,您需要在解決方案中的啟動應用程序上啟用混合模式調試。
這將允許您調試F5樣式場景的本機代碼。 如果要將其啟用以附加到進程,請在“附加到進程”對話框中執行以下操作
您需要啟用非托管(本機)調試。
如果您在啟動后附加到該進程:
轉到“工具”菜單,然后附加到進程,確保已啟用本機調試。
您將看到一個只讀編輯框:
附加到:托管代碼,本機代碼[Select]
確保在那里列出本機代碼。 如果沒有添加它。
如果您從visual studio中啟動項目:
在您以調試模式啟動的項目屬性上。 轉到項目“屬性”,然后選擇“調試”選項卡。
確保選中此復選框:
啟用非托管代碼調試
附加到要調試的進程時,必須指定要附加的方式。 您有幾個選項,即Managed和Native。 為了使用非托管C ++調試C#代碼,您必須將進程作為Managed和Native附加(兩者都可以同時選擇)。
面對同樣的問題並完成了所接受的答案中提出的所有問題,但非托管DLL中的斷點沒有被擊中!
但是,當我做了以下我可以最終調試DLL!
在Solution Explorer中選擇解決方案
從Menu
>> Tools
>> options
>> Debugging
>> General
取消選中“ 要求源文件與原始版本完全匹配 ”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.