我的 .Net 应用程序正在使用一些 vb6 控件和库。我无法通过我的 .net 应用程序调试 vb6 代码。任何人都可以帮助我,我如何调试在 .net 应用程序中用作用户控件的 vb6 代码。
4 回答
我已经做过很多次了,这里有一篇关于如何在 MSDN上进行的分步文章。基本上,您只需要在 VB6 中按 F5,然后在您正在调查的 VB6 代码中设置断点。
.NET 中的下一步确保您添加了对刚刚构建的确切 VB6 DLL 的引用,并运行 .NET 应用程序,它应该命中您的 VB6 断点(记住 VB6 应用程序仍在运行,您将其留在 F5 处)
试试这个建议,在这里找到
1. 使用符号构建您的 VB6 项目。
在 VB6 中打开您的 vbp 文件并转到“Project->Properties”。选择“编译”选项卡并选中“编译为本机代码”。然后选择“No Optimization”单选按钮并选中“Create Symbolic Debug Info”。
这将与您的 .EXE 一起生成一个 .PDB(程序数据库)文件。此文件包含调试信息,因此 VS.NET 调试器可以排列源代码并命中断点等。(确保您的 VB6 dll 集具有二进制兼容性,否则您必须删除并重新添加对 VB6 的引用VS.NET 中的组件。)
2. 在 VS.NET 中打开您的 .NET 项目。
转到项目属性并选择“配置属性->调试”属性页并启用非托管调试。
对于 VB.NET 项目,此选项为“非托管代码调试”,对于 C#,此选项为“启用非托管调试”。
3. 选择属性。
在“调试源文件”中添加一个条目,该条目指向 VB6 组件的源代码所在的路径。
在“调试符号文件”中添加一个条目,该条目指向在步骤 1 中生成的 .PDB 文件所在的文件夹。
您现在应该能够在 VS.NET 中打开 .bas、.cls、.frm 等文件,并且可以在文件中放置断点。调试后,调试器将停止在这些代码行上。
免责声明:我自己没有尝试过。
我不确定你能不能做到,但我从以下链接得到了一些想法:
如果您在解决方案资源管理器中双击我的项目并转到“调试”选项卡,您将看到一个显示“启动外部程序”的选项。选择此选项并键入“C:\Program Files\Microsoft Visual Studio\vb6.exe”。(带引号)。
之后,将 .vbp 文件的完整路径放在命令行参数中(也用引号括起来)。现在,当您运行 VS 时,将启动 VB6,并附加调试器。然后,您可以按照您习惯的正常方式设置和命中断点。
或者,您也可以使用 Tools->Attach to process 来执行此操作,但我个人发现第一种方法更容易。您设置一次,然后您不必再担心它。
需要注意的一件事是,如果您在 VS2005 中点击停止,您的 VB6 程序将退出而不提示您保存,因此如果您在 VB6 项目中进行任何更改,请确保在按 F5 之前单击“保存”(在 VB6 中)。
希望对您有所帮助,如果您对此有任何问题,请告诉我们。
您不能在高于已编译汇编代码的任何级别在 Visual Studio 中调试 VB6 代码。如果你有源代码,你可以转换它。