【问题标题】:Debug COM dll in VS2010在 VS2010 中调试 COM dll
【发布时间】:2011-08-19 12:06:08
【问题描述】:

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

在与旧 ASP 项目完美配合的函数调用中,我在 DLL 代码中收到 AccessViolationException。

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

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

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

【问题讨论】:

  • 把它还给你的同事。调试堆损坏不是为了装腔作势,.pdb 实际上并没有帮助。

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


【解决方案1】:

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

来自MSDN

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

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

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

【讨论】:

  • ASP.NET WebApplication 项目的项目设置中没有“调试”选项卡。或者我是盲人。 :)
【解决方案2】:

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

Unmanaged DLL causing AccessViolationException

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-05
    • 2015-02-22
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多