2011-09-19 123 views
2

我有一個老的DLL寫在Visual Studio 6中,我從C#寫的Visual Studio 2010中調用。該DLL工作不正常,我想調試到它。我怎樣才能做到這一點?我有源代碼項目,但看不到我可以如何進入它。調試從C#調用VC++ 6 DLL#

注意:當我說「不起作用」時,對DLL的調用會成功,並且會在失敗之前通過DLL中的代碼獲得一些方法,但我想要精確地追蹤到哪裏。

+0

你已經試過了什麼?例如,你有沒有試過將VS6附加到調試? –

+0

我已經嘗試將VC6調試器附加到C#應用程序,但該進程不顯示在生成 - >調試 - >附加到進程 – Jonnster

回答

3

調試DLL的技術在MSDN上描述爲here。您需要從Visual Studio 6(即開發DLL的工具)執行此操作,所以術語將發生更改。但原則保持不變。

+0

謝謝。讀完這一切後,這一切都回來了。 – Jonnster

2

在.NET進程上附加VS6調試器應該可以工作,只要你有相應的二進制文件和源代碼的PDB文件。但是,只能在DLL代碼上打破。

如果選中「允許非託管調試」標誌,則附加其他VS +應能工作,但調試器可能沒有加載符號。 DLL的重新編譯將解決最後一個問題。

+0

我已經嘗試將vc6調試器提供給.NET進程,但.NET進程(WinForms應用程序)不會顯示在列表中。 – Jonnster

+0

嘗試將.NET項目平臺更改爲x86,重新編譯它並重做操作。 – Luca

2

打開Visual C++的Dll項目,在需要的地方設置斷點。在調試會話的項目屬性Debug,Executable中,輸入使用此Dll的.NET可執行文件。開始調試(Go)。調用VC++函數時,調試器會中斷。使用這種方法,您只能調試非託管VC++代碼。

另一種方法是以混合調試模式從.NET客戶端開始調試。將VC++項目添加到解決方案並重建它以調試託管代碼和非託管代碼。