从Visual Studio 2012调试VB6代码
我们有一个.NET应用程序,它使用很多以VB6编写的遗留组件。我们能够使用本地代码调试器调试VB6代码,并在Visual Studio 2010中生成pdb文件。升级到VS 2012(包括更新2)后,我们无法做到这一点。从Visual Studio 2012调试VB6代码
以下消息的模块窗口显示:
二进制不与调试信息。
您还可以找到以下在输出窗口消息:
模块不带符号的铺设。
当我尝试手动加载符号,我得到以下信息:
的匹配符号文件这个文件夹中没有被发现。
从VS 2010调试非常相同的DLL或EXE工作正常。
有没有选择启用它?
我终于找到了如何使用Visual Studio 2012调试VB6组件。总之,您必须先启用旧的pdb格式,方法是设置“选项”|“调试|编辑并继续|启用本机编辑并继续,然后您可以像往常一样附加到dllhost.exe。
这也适用于旧的VC6 C++项目。谢谢! – 2013-12-23 23:56:19
感谢提及VC++ 6,@EdBayiates。最后得到一个有效的,工作的答案后的头发拉动和gnashing在汇编和映射地址! – Hugo 2017-08-11 18:37:52
看来VS 2012使用msdia110.dll来解码符号文件,VS文件夹中有一个DIA SDK示例,您可以测试它是否可以解析这些VB pdb文件。如果它不能,我想新版本DIA不再支持旧版本的pdb。
我发现了一个适用于我的机器的解决方案(根据微软对ScottG的paid support request的评论 - 谢谢Scott)。显然,2010年以后Visual Studio的默认调试器不处理VB6的DLL,但有一个复选框,使用旧的调试引擎,它的作用:
我并不需要启用本机编辑并继续。
也适用于Visual Studio 2015 – 2016-04-18 15:34:03
是的,我可以证实这是我在VS2015和VB6 COM DLL中的解决方案。 – scipilot 2017-02-27 04:50:41
Visual Studio 2015可能是该行的结尾。我还没有找到使用Visual Studio 2017调试VB6代码的方法。 – 2017-07-20 13:37:30
在VS 2015工具 - >选项 - >调试 - >常规中,选择'使用本地兼容模式'。它很糟糕,我仍然需要调试VB6,但我很感激,我仍然能够。
需要注意的是,当我使用“使用本机兼容模式”时,确实遇到了我的断点问题。取消选中“使用本机兼容模式”更正了这些问题。所以这个设置并非没有问题。 – 2017-04-26 23:09:15
你使用VC++调试器来完成任务还是什么? – 2013-05-07 19:46:23
无法回答你的问题,但很想知道更多关于使用VS2010调试VB6的问题!听起来像是旧式混合语言应用程序的节省时间。 – tcarvin 2013-05-08 13:09:34
在[本文]中查找有关在VS 2010中调试VB6的详细信息(http://blogs.msdn.com/b/robgruen/archive/2004/11/09/254602.aspx) – Pecan 2013-05-09 10:13:53