我的 .Net 应用程序使用了一些 VB6 控件和库。我无法通过我的 .Net 应用程序调试 VB6 代码。有人可以帮帮我吗,我该如何调试在 .Net 应用程序中使用了一个 VB6 用户控件的 VB6 代码。
我的 .Net 应用程序使用了一些 VB6 控件和库。我无法通过我的 .Net 应用程序调试 VB6 代码。有人可以帮帮我吗,我该如何调试在 .Net 应用程序中使用了一个 VB6 用户控件的 VB6 代码。
在.NET中的下一步是确保您添加了对刚刚构建的确切VB6 DLL的引用,并运行.NET应用程序,它应该会触发您的VB6断点(记住VB6应用程序仍在运行,您把它留在了F5)。
尝试这个建议,来源于这里
在VB6中打开vbp文件并转到“项目->属性”。 选择“编译”选项卡,并选中“编译为本地代码”。 然后选择“无优化”单选按钮并选中“创建符号调试信息”。
这将生成一个.PDB(程序数据库)文件和您的.EXE。 此文件包含调试信息,以便VS.NET调试器可以对齐源和断点等。(请确保您的VB6 dll集上具有二进制兼容性,否则您必须在VS.NET中删除并重新添加对VB6组件的引用。)
转到项目属性并选择“配置属性->调试”属性页面,启用非托管调试。
对于VB.NET项目,此选项为“非托管代码调试”,对于C#是“启用非托管调试”。
在“调试源文件”中添加一个条目,指向VB6组件源代码所在的路径。
在“调试符号文件”中添加一个条目,指向步骤1中生成的.PDB文件所在的文件夹。
现在,您应该能够在VS.NET中打开您的.bas、.cls、.frm等文件,并在文件中设置断点。 一旦调试,调试器将停止在这些代码行上。
免责声明:我自己没有尝试过这个方法。
我不确定你是否能够做到,但是我已经从以下link获得了一些想法:
如果您在“解决方案资源管理器”中双击“我的项目”,并转到“调试”选项卡,您将看到一个名为“启动外部程序”的选项。选择此选项,并键入“C:\ Program Files \ Microsoft Visual Studio \ vb6.exe”(带引号)。 之后,在命令行参数中放置您的.vbp文件的完整路径(同样要加上引号)。现在,当您运行VS时,将会启动VB6,并附加调试器。然后,您可以按照您习惯的常规方式设置和命中断点。 或者,您也可以使用“工具”->“附加到进程”来完成此操作,但我个人发现第一种方法更容易。您只需设置一次,然后就不必再担心它了。 需要注意的一件事是,如果您在VS2005中点击停止,则您的VB6程序将退出而不提示您保存,因此,如果您在VB6项目中进行任何更改,请确保在按F5之前单击保存。 希望这有所帮助,请让我们知道您是否遇到任何问题。你无法在Visual Studio中以任何比编译后的汇编代码更高的级别来调试VB6代码。如果你有源代码,就可以将其转换。