在VS2010中调试COM dll

本文关键字:COM dll 调试 VS2010 | 更新日期: 2023-09-27 18:06:20

我有一个ASP。. NET web应用程序。. NET 4.0/c#)与外部COM dll一起工作(用c++编写)。

在一个函数调用上,它在一个旧的ASP项目中完美地工作,我在DLL代码中得到一个AccessViolationException。

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

我如何使用这个调试dll来找出错误发生的地方?我找不到进入我正在调用的方法的方法。这可能吗?

编辑:我也有。pdb文件,如果这有任何好处。由于某种原因,我无法在调试->Windows->模块概述中看到COM dll。

在VS2010中调试COM dll

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

从MSDN:

"项目设计器"的"调试"页上提供的非托管代码调试属性确定是否支持调试本机代码。如果您正在调用COM对象,或者如果您启动用本机代码编写的自定义程序来调用您的项目并且需要调试本机代码,请选择此选项。

对于ASP,您需要在Web选项卡的调试器部分选中'Native Code'。

还应该在调试选项中禁用Just My Code调试

也许你可以使用Ildasm.exe来撕裂dll,看看你错过了什么。至于违规问题,听起来好像和这个问题差不多。尝试从这个SO进行静态导入。MsCorlib.dll可能与第三方dll有问题。

非托管DLL导致AccessViolationException

注意依赖关系,并且您可能会遇到一些封送处理问题。我建议在控制台应用程序中使用DllImport,看看它是否可以解决。祝你好运!