我有一个ASP.NET WebApplication(.NET 4.0 / C#),它可以与外部COM dll一起使用(用C ++编写)。
在函数调用上,它与旧的ASP项目完美配合,我在DLL代码中得到了一个AccessViolationException。
为了调试它,我从我的同事那里请求了DLL的调试版本。我无法直接访问dll项目或源代码。
如何使用此调试dll找出错误发生的位置?我无法找到一种方法来进入我正在调用的方法。有可能吗?
编辑:我也有.pdb文件,如果这有任何好处的话。出于某种原因,我无法在Debug-> Windows->模块概述中看到COM dll。我真的被卡住了,任何帮助都表示赞赏。答案 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!