13

我们有一个使用大量用 VB6 编写的遗留组件的 .NET 应用程序。我们能够使用本机代码调试器调试 VB6 代码并在 Visual Studio 2010 中生成 pdb 文件。升级到 VS 2012(包括更新 2)后,我们无法执行此操作。

模块窗口显示以下消息:

二进制文件不是使用调试信息构建的。

您还可以在输出窗口中找到以下消息:

模块是在没有符号的情况下构建的。

当我尝试手动加载符号时,我收到以下消息:

在此文件夹中未找到匹配的符号文件。

从 VS 2010 调试相同的 dll 或 exe 工作正常。

有没有启用它的选项?

4

4 回答 4

10

我找到了一个可以在我的机器上运行的解决方案(根据 Microsoft 对 ScottG 的付费支持请求的评论- 谢谢,Scott)。显然 Visual Studio 2010 年后的默认调试器不处理 VB6 DLL,但有一个复选框可以使用旧的调试引擎,它可以:

在此处输入图像描述

我不需要启用本机编辑并继续。

于 2014-03-04T21:24:31.883 回答
9

我终于找到了如何使用 Visual Studio 2012 启用调试 VB6 组件。简而言之,您必须首先通过设置 Options | 启用旧的 pdb 格式。调试 | 编辑并继续 | 启用本机编辑并继续,然后您可以像往常一样附加到 dllhost.exe。

于 2013-06-24T11:19:08.240 回答
2

在 VS 2015 工具->选项->调试->常规中,选择“使用本机兼容模式”。很糟糕,我仍然需要调试 VB6,但我很庆幸我仍然能够做到。

于 2017-04-26T03:08:48.090 回答
1

看来VS 2012使用msdia110.dll解码符号文件,VS文件夹中有一个DIA SDK示例,你可以测试它是否可以解析那些VB pdb文件。如果不能,我猜新版本的 DIA 不再支持旧版本的 pdb。

于 2013-05-07T16:48:22.103 回答