【问题标题】:Need help on debugging of vb6 code that is used in .net application需要帮助调试 .net 应用程序中使用的 vb6 代码
【发布时间】:2013-07-22 10:26:27
【问题描述】:

我的 .Net 应用程序正在使用一些 vb6 控件和库。我无法通过我的 .net 应用程序调试 vb6 代码。谁能帮帮我,我如何调试在 .net 应用程序中使用 s 用户控件的 vb6 代码。

【问题讨论】:

标签: .net vb6


【解决方案1】:

试试这个建议,找到here

1。使用符号构建您的 VB6 项目。

在 VB6 中打开您的 vbp 文件并转到“项目->属性”。选择“编译”选项卡并选中“编译为本机代码”。然后选择“No Optimization”单选按钮并选中“Create Symbolic Debug Info”。

这将与您的 .EXE 一起生成一个 .PDB(程序数据库)文件。此文件包含调试信息,因此 VS.NET 调试器可以排列源代码并命中断点等。(确保您的 VB6 dll 集具有二进制兼容性,否则您必须删除并重新添加对 VB6 的引用VS.NET 中的组件。)

2。在 VS.NET 中打开您的 .NET 项目。

进入项目属性,选择“Configuration Properties->Debugging”属性页,开启非托管调试。

对于 VB.NET 项目,此选项为“非托管代码调试”,对于 C#,此选项为“启用非托管调试”。

3。选择属性。

在“调试源文件”中添加一个条目,该条目指向 VB6 组件的源代码所在的路径。

在“调试符号文件”中添加一个条目,该条目指向在步骤 1 中生成的 .PDB 文件所在的文件夹。

您现在应该可以在 VS.NET 中打开 .bas、.cls、.frm 等文件,并且可以在文件中放置断点。调试后,调试器将停止在这些代码行上。

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

【讨论】:

  • 这可能有效,但根据我的经验,设置和使用比仅在 IDE 中运行 VB6 代码更费力。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我不确定你能不能做到,但我从关注link得到了一些想法:

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

    之后,将 .vbp 文件的完整路径放在命令行中 论点(也用引号引起来)。现在当你运行 VS 时会触发 启动VB6,并附上调试器。然后你可以设置并点击 以您习惯的正常方式设置断点。

    或者,您也可以使用工具->附加到进程来执行此操作,但是 我个人觉得第一种方法更容易。您设置一次,然后 那么您就不必再担心了。

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

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

    【讨论】:

    • 我同意,这是最简单的方法,前提是您在 .NET 和 VB6 方面都有完整的源代码。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2013-08-12
      • 1970-01-01
      • 2013-02-23
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多