簡體   English   中英

無法從C#調試非托管Dll

[英]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樣式場景的本機代碼。 如果要將其啟用以附加到進程,請在“附加到進程”對話框中執行以下操作

  • 選擇要調試的過程
  • 單擊流程列表上方的“選擇...”按鈕
  • 單擊“調試這些代碼類型”
  • 檢查Managed和Native

您需要啟用非托管(本機)調試。

如果您在啟動后附加到該進程:

轉到“工具”菜單,然后附加到進程,確保已啟用本機調試。

您將看到一個只讀編輯框:

附加到:托管代碼,本機代碼[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM