Debugging 从Visual Studio 2012调试VB6代码

Debugging 从Visual Studio 2012调试VB6代码,debugging,visual-studio-2012,vb6,Debugging,Visual Studio 2012,Vb6,我们有一个.NET应用程序,它使用了许多用VB6编写的遗留组件。我们能够使用本机代码调试器调试VB6代码,并在VisualStudio2010中生成pdb文件。升级到VS 2012(包括更新2)后,我们无法执行此操作 模块窗口显示以下消息: 二进制文件不是用调试信息生成的 您还可以在输出窗口中找到以下消息: 模块是在没有符号的情况下构建的 当我尝试手动加载符号时,会收到以下消息: 在此文件夹中找不到匹配的符号文件 从VS2010调试相同的dll或exe可以正常工作 有任何选项可以启用它吗?似乎V

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

模块窗口显示以下消息:

二进制文件不是用调试信息生成的

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

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

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

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

从VS2010调试相同的dll或exe可以正常工作


有任何选项可以启用它吗?

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

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

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


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

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

您是否使用VC++调试器执行此任务?无法回答您的问题,但希望了解有关使用VS2010调试interop VB6的更多信息!听起来像是为旧的混合语言应用程序节省时间。请在Im中查找有关在VS 2010中调试VB6的详细信息。目前,我正在尝试找到一种解决方法,以便在Server 2012上调试VB6。下面的修复对我没有帮助。我目前有一个Micorosft Connect通话记录和一个付费支持。我已经将问题缩小为Server2012无法看到dll是用符号构建的问题。还有其他人还在为此苦苦挣扎吗?我已经构建了示例并尝试解析pdb文件,一切都正常。我还检查了它使用的是C:\程序文件(x86)\微软Visual Studio 11 \Mux7\Posik\\Debug Gudia1\DLL.Google,那么我建议您在VB支持的情况下向微软报告bug。这也适用于旧的VC6 C++项目。谢谢谢谢你提到VC++6,@EdBayiates。经过几天的拉扯和啃噬装配和映射地址,终于得到了一个有效的、有效的答案!是的,我可以确认这是我在VS2015和我们的VB6 COM DLL中的解决方案。Visual Studio 2015可能是该系列的终点。我没有找到使用Visual Studio 2017调试VB6代码的方法。已启用使用Visual Studio 2015启用编辑并继续,并已启用启用本机编辑并继续。没有拉入VB6符号。已选择“使用托管兼容模式”,Visual Studio已使用VB6符号启动。从未考虑过尝试选择此选项。非常感谢。需要注意的是,当我设置了“使用本机兼容模式”时,我在命中断点时确实遇到了问题。取消选中“使用本机兼容模式”可更正这些问题。因此,设置并非没有问题。