簡體   English   中英

通過COM從C ++解決方案調試C#dll

[英]Debug C# dll from C++ solution via COM

我有一個C ++解決方案。 啟動項目是一個exe。 在解決方案中,有一些C#dll(針對.NET Framework 2.0)已注冊COM interop。 當我在C#代碼中放置一個斷點時,我得到了空心的紅色斷點, "No native symbols in symbol file"

我已經嘗試在調用COM方法的啟動項目中將Project Property Pages -> Debugging -> Debugger Type為Mixed。

我檢查了Debug -> Windows -> Modules 它已加載我的dll,符號狀態為"No native symbols in symbol file"

這不是世界末日,因為如果我執行Debug -> Start Without Debugging然后Debug -> Attach to Process ,將Attach To:更改為Managed (v2.0, v1.1, v1.0) code, Native code 然后我在C ++代碼和C#代碼中都遇到了斷點。

所以我有我的解決方法,但我認為如果我可以通過附加到進程來做到 - 我應該能夠通過調試來做到這一點。

如何通過Debug -> Start Debugging來點擊我的C#斷點?

我可以通過執行以下操作從VS2008中的C ++項目調試我的C#dll:

在C ++項目的屬性中,轉到配置屬性 - >調試。 將“調試器類型”設置為“混合”。 “附加”應設置為“否”。

在C#項目屬性中的Debug選項卡中,將“Start External Program”設置為C ++項目的可執行文件。

我知道它有點舊,但我找到了解決問題的實用方法。

在使用使用C#COM-Object的C ++應用程序時遇到了同樣的問題。 我在C ++和C#端的Visual Studio中嘗試了幾個設置。 在我嘗試手動啟動調試器之前沒有任何幫助。

您可以使用

Debugger.Launch();

手動啟動C#DLL上的調試器。 我知道這不是最好的,而是一種實用的方法。 在以后的生產環境中,您必須刪除調試器啟動功能:)。

問候

我不確定這是否有幫助,但我們使用C#和C ++工作很多。 我發現這可以通過將C ++項目和C#項目放在同一個解決方案中並在C#項目中啟用“本機調試”來實現。 然后我可以在調試時在它們之間來回跳轉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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