2011-08-19 114 views
1

我有一個ASP.NET WebApplication(.NET 4.0/C#),與外部COM dll(用C++編寫)一起工作。在VS2010中調試COM DLL

在一個函數調用中,它與舊的ASP項目完美協作,我在DLL代碼中得到一個AccessViolationException。

爲了調試它,我向我的同事寫了一個調試版本的DLL。雖然我沒有直接訪問dll項目或源代碼。

如何使用此調試dll找出錯誤發生的位置?我無法找到一種方法來進入我所調用的方法。可能嗎?

編輯:我也有.pdb文件,如果這是好的。出於某種原因,我無法在Debug-> Windows-> Modules overview中看到COM DLL。我真的被卡住了,任何幫助表示讚賞。

+0

把它還給你的同事。調試堆腐敗並不是爲了嘲諷心臟,.pdb實際上並沒有幫助。 –

回答

4

您需要有非託管代碼調試啓用。

MSDN

的非託管代碼調試屬性,該項目設計的調試頁面上可用,決定了本機代碼調試是否支持。如果您正在調用COM對象,或者如果您啓動使用本機代碼編寫的調用項目的自定義程序,並且需要調試本機代碼,請選擇此選項。

對於ASP,您需要在Web選項卡的調試器部分檢查「Native Code」。

此外,你應該有只是我的代碼調試禁用在調試選項。

+0

ASP.NET WebApplication項目的「項目設置」中沒有「調試」選項卡。或者我是盲人。 :) – magnattic

+0

更新我的答案 – sloth

0

也許你可以使用Ildasm.exe通過DLL翻錄,看看你錯過了什麼。至於違規行爲,它聽起來好像與這個問題類似。嘗試從這個SO靜態導入。 MsCorlib.dll可能與第三方DLL有問題。

Unmanaged DLL causing AccessViolationException

注意的依賴關係,因此您可能有一些編組的問題。我建議在控制檯應用程序中使用DllImport以查看它是否可以解決。最好的lucK!