【问题标题】:How to debug vb6 activex componenet如何调试 vb6 activex 组件
【发布时间】:2018-05-10 13:35:03
【问题描述】:

我有一个从另一个桌面应用程序调用的 VB6 ActiveX EXE。当我启动我的桌面应用程序时,我可以看到进程管理器中列出的 ActiveX exe。如何在 VB6 IDE 中调试此 ActiveX 组件?

【问题讨论】:

  • 所以你想把 VS6 调试器附加到像 VS20XX 这样运行的 .exe 上?我认为这是不可能的。
  • ActiveX EXE 是用 PDB 文件创建的吗?如果是这样,您可以使用 Visual Studio 将调试器附加到 ActiveX EXE,然后加载 PDB。加载后,您可以打开与 ActiveX EXE 相关的源代码并放置所需的断点。

标签: vb6


【解决方案1】:

将您的 ActiveX exe 项目加载到 vb6 IDE 中。根据需要设置断点。按 F5(或使用鼠标单击开始按钮图标)。

然后启动桌面应用程序。当它实例化您的应用程序时,它将连接到在 IDE 中运行的副本。请注意,您不会在任务管理器中看到 ActiveX exe。

【讨论】:

  • 不,这不起作用。当我启动桌面应用程序时,它直接调用 ActiveX,没有在 VB6 IDI 中命中断点。
  • 项目兼容性是否设置为二进制兼容性?兼容性目标与桌面应用程序实例化的版本/接口相同?如果没有,那么您将看到您所描述的行为(桌面应用程序最终会实例化 exe,而不是正在运行的 IDE 中的项目)。
  • 让我解释一下我做了什么。1) 将 ActiveX 项目加载到 vb6 IDE 2) 设置 ActiveX exe 所在的二进制兼容性路径。 2)在主方法上放置断点并按F5(让我解释一下为什么我在按下F5之前放置断点,因为如果我没有放置断点,那么应用程序将通过调用应用程序所期望的命令行参数的错误。 ) 3) 启动桌面应用程序。所以桌面应用程序调用的是 ActiveX exe 而不是通过 VB6 IDE 打开的 ActiveX 控件。
  • 命令行?当通过 COM/ActiveX 实例化 ActiveX exe 时,您没有命令行。您的桌面应用程序是在 shell-ing 或 Process.Start-ing 还是以类似方式启动您的 exe?如果是这样,那么它不是以这种方式作为 ActiveX 运行的,您可以编译为标准 exe,并且桌面应用程序仍然可以运行您的 exe。如果是这种情况,那么,不,您无法在从桌面应用程序运行时调试您的应用程序。您可以在 IDE 中使用命令行参数运行您的 exe 进行调试,然后不需要桌面应用程序。但我现在还不完全清楚你在做什么。
  • 或者 - 您可能必须为组件设置启动模式。选择 Project-Properties,Component 选项卡并选择“ActiveX Component”而不是“Standalone”。然后当按下 F5 启动程序时,它将等待程序被实例化(通过桌面应用程序)。
【解决方案2】:

我们必须从所有地方注销 ActiveX exe 并确保注册表中没有条目。

使用activex exe名称搜索注册表,如果注册表中有任何条目,请手动将其删除。

否则测试应用程序将触发 activex 而不是从 IDE 运行的那个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2013-10-08
    相关资源
    最近更新 更多