如何调试从另一个应用程序启动的应用程序? (VB6)

时间:2016-05-06 15:47:31

标签: vb6

想象一下,当我启动应用程序#0时,它会进行一些计算,并在一段时间后启动应用程序#1,应用程序#2,应用程序#3。 (它发送一些参数,反对新的应用程序。)。

我想调试应用程序#1,但必须从应用程序#0启动。

我该怎么做? (我使用Visual Studio 6& i有源代码和关于这些应用程序的所有内容)

2 个答案:

答案 0 :(得分:5)

阅读this article,其中介绍了如何调试ActiveX exe

基本上,您将运行ActiveX exe,然后在调用应用程序中添加对它的引用。 保持ActiveX exe运行,因为引用是针对其运行进程,而不是其编译的exe。现在也运行调用应用程序。这将允许您在visual studio的单独实例中停止断点。

已经有一段时间但我想确保自己可以做到这一点,我可以确认它有效。所以这就是:

创建一个名为Project1的新项目。它将是ActiveX EXE

enter image description here

您应该有一个名为Class1的文件,您将在其中放置此代码:

Option Explicit

Public Function Foo()
    MsgBox "foo"
End Function

现在创建另一个名为Project2的项目。这是标准的EXE

enter image description here

启动Project1。此提示询问项目启动时要执行的操作。选择"等待创建组件"。单击确定并保持运行。

enter image description here

转到Project2,项目菜单>>引用。在列表中找到 Project1 。勾选复选框。 (此时不要将文件系统浏览到Project1,只需在可用的引用列表中使用临时二进制文件!)

enter image description here

现在在Project2.Form1

中输入此代码
Option Explicit

Private Sub Form_Load()
    Dim p As New Project1.Class1
    p.Foo
End Sub

您可以在msgbox行上的Project1.Class1.Foo()中放置一个断点。运行Project2时将触发此断点。

您添加的引用严格用于调试。部署应用程序时,应将ActiveX exe二进制文件复制到应用程序目录并直接引用这些文件。

答案 1 :(得分:0)

Microsoft发布了一些与此有关的文章,但它声明您必须启动VB6.exe作为子进程而不是编译的VB6程序。