单步执行.NET Class包装的VB6 COM对象

我有一个由.NET类包装的VB6对象。 据我所知,只需运行VB6库并在所需位置插入断点即可逐步执行VB6对象(编译为库)。

然而,这似乎并不适用于我的情况。 我试图重新编译VB6对象并在我的.NET项目中重新引用它,但这似乎没有帮助。

我从哪里去? 有没有办法将Debugger.Launch()等效插入到VB6项目中? 任何帮助,将不胜感激!!

摘自robgruen的博客 :

如果你使用interop调用VB6 ActiveX DLL或exe,你需要调试VB6项目,你可能会发现自己同时打开了VS.NET和VB6 IDE。 这当然远非有效。

通常,您将VB6项目设置为“等待创建组件”,然后启动.NET应用程序,然后在VB6组件中点击断点。 嗯,有一个更简单的方法来做到这一点。 您可以在VS.NET中实际调试VB6组件。 这是你需要做的:

1)使用符号构建VB6项目。在VB6中打开你的vbp文件并转到“Project-> Properties”。选择“编译”选项卡并选中“编译为本机代码。”然后选择“无优化”单选按钮,选中“创建符号调试信息”。

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

2)在VS.NET中打开.NET项目。

3)转到项目属性并选择“Configuration Properties-> Debugging”属性页并启用非托管调试。
对于VB.NET项目,此选项是“非托管代码调试”,而C#是“启用非托管调试”。

4)选择解决方案的属性页面。

5)向“调试源文件”添加一个条目,该条目指向源代码用于VB6组件的路径。

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

7)您现在应该能够在VS.NET中打开.bas,.cls,.frm等文件,并且可以在文件中放置断点。 一旦调试调试器将停止在那些代码行上。