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