3

我的 .Net 应用程序正在使用一些 vb6 控件和库。我无法通过我的 .net 应用程序调试 vb6 代码。任何人都可以帮助我,我如何调试在 .net 应用程序中用作用户控件的 vb6 代码。

4

4 回答 4

2

我已经做过很多次了,这里有一篇关于如何在 MSDN上进行的分步文章。基本上,您只需要在 VB6 中按 F5,然后在您正在调查的 VB6 代码中设置断点。

.NET 中的下一步确保您添加了对刚刚构建的确切 VB6 DLL 的引用,并运行 .NET 应用程序,它应该命中您的 VB6 断点(记住 VB6 应用程序仍在运行,您将其留在 F5 处)

于 2013-07-22T23:58:39.807 回答
2

试试这个建议,在这里找到

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 等文件,并且可以在文件中放置断点。调试后,调试器将停止在这些代码行上。

免责声明:我自己没有尝试过。

于 2013-07-22T12:15:16.697 回答
0

我不确定你能不能做到,但我从以下链接得到了一些想法:

如果您在解决方案资源管理器中双击我的项目并转到“调试”选项卡,您将看到一个显示“启动外部程序”的选项。选择此选项并键入“C:\Program Files\Microsoft Visual Studio\vb6.exe”。(带引号)。

之后,将 .vbp 文件的完整路径放在命令行参数中(也用引号括起来)。现在,当您运行 VS 时,将启动 VB6,并附加调试器。然后,您可以按照您习惯的正常方式设置和命中断点。

或者,您也可以使用 Tools->Attach to process 来执行此操作,但我个人发现第一种方法更容易。您设置一次,然后您不必再担心它。

需要注意的一件事是,如果您在 VS2005 中点击停止,您的 VB6 程序将退出而不提示您保存,因此如果您在 VB6 项目中进行任何更改,请确保在按 F5 之前单击“保存”(在 VB6 中)。

希望对您有所帮助,如果您对此有任何问题,请告诉我们。

于 2013-07-31T07:41:34.303 回答
-1

您不能在高于已编译汇编代码的任何级别在 Visual Studio 中调试 VB6 代码。如果你有源代码,你可以转换它。

于 2013-07-22T10:33:06.090 回答