在VS2010中调试COM dll

时间:2011-08-19 12:06:09

标签: c# visual-studio-2010 debugging dll com

我有一个ASP.NET WebApplication(.NET 4.0 / C#),它可以与外部COM dll一起使用(用C ++编写)。

在函数调用上,它与旧的ASP项目完美配合,我在DLL代码中得到了一个AccessViolationException。

为了调试它,我从我的同事那里请求了DLL的调试版本。我无法直接访问dll项目或源代码。

如何使用此调试dll找出错误发生的位置?我无法找到一种方法来进入我正在调用的方法。有可能吗?

编辑:我也有.pdb文件,如果这有任何好处的话。出于某种原因,我无法在Debug-> Windows->模块概述中看到COM dll。我真的被卡住了,任何帮助都表示赞赏。

2 个答案:

答案 0 :(得分:4)

您需要启用非托管代码调试

来自MSDN

  

Project Designer的Debug页面上提供的Unmanaged code debugging属性确定是否支持调试本机代码。如果要调用COM对象,或者如果启动用调用项目的本机代码编写的自定义程序,并且需要调试本机代码,请选择此选项。

对于ASP,您需要在Web选项卡的Debuggers部分中检查“Native Code”。

此外,您应该在调试选项中禁用 Just My Code debugging

答案 1 :(得分:0)

也许您可以使用Ildasm.exe来翻录dll以查看您缺少的内容。至于违规行为,听起来好像与此问题类似。尝试从此SO进行静态导入。 MsCorlib.dll可能与第三方DLL有问题。

Unmanaged DLL causing AccessViolationException

请注意依赖项,并且您可能会遇到一些封送问题。我建议在控制台应用程序中使用DllImport来查看它是否可以解析。最好的lucK!