【问题标题】:How to use VB6 debugger on Outlook property page OCX?如何在 Outlook 属性页 OCX 上使用 VB6 调试器?
【发布时间】:2010-11-04 09:07:50
【问题描述】:

使用 VB6,我创建了一个 Outlook 插件,它有一个属性页。属性页是一个 OCX 控件。

当我将项目编译为 OCX 文件,然后运行 ​​OUTLOOK 时,一切正常:我可以在 Outlook 选项中将 OCX 视为选项卡。

但是,当我尝试通过在 VB6 中运行 OCX 进行调试时,出现错误。我的调试是这样开始的: 1)调试选项设置为等待组件被创建“ 2) VB6 中的 F5-RUN 项目。 3) 启动 Outlook。 4) 收到错误:“无法显示“MyOcx”页面。此页面将保持可见,但不可用。发生 OLE 注册错误。程序未正确安装。再次为该程序运行安装程序”

我怀疑这是因为在调试时,OCX 是在进程外创建的,而 Outlook 不喜欢这样。

在这种情况下,有没有一种好的技术可以在 OCX 上使用 VB6 调试器?

【问题讨论】:

    标签: vb6 outlook debugging


    【解决方案1】:

    在调试 DLL 或 OCX 时,VB6 调试器有时会出现问题。

    • 您可以尝试Windbg,这是 Microsoft 提供的免费独立调试器。将您的 VB6 OCX 编译为本机代码,无需优化并“创建符号调试信息”(即创建 PDB 文件),您将能够在 Outlook 中调试 OCX 进程。这是一位微软人员的2006 blog post,关于在 VB6 中使用 Windbg,另一位微软人员的 2004 blog post 是对 Windbg 的简要介绍。
    • 您还可以将 Visual Studio 2008 调试器与 VB6 和 PDB 文件一起使用,例如Visual C++ Express Edition(免费)。编辑请参阅Kris's answer 了解更多详情。
    • 编辑:Windbg 和 Visual Studio expect 源代码在调试机器上的路径与构建 OCX 时在构建机器上的路径完全相同。最简单的方法是在同一台机器上构建和调试。否则,您可能需要 fiddleSUBST 来创建虚拟驱动器 - 或者我被告知严肃的方法是使用 Symbol Server
    • (不太严重)你可以不用那些新奇的交互式调试器,只需登录到一个文件,或者使用DebugMessage calls from your VB6

    【讨论】:

    • 请注意,2004 年 Mike Taulty 在 WinDbg 上的博客文章的链接已损坏,但该页面目前仍存在于 mtaulty.com/2004/08/03/m_4656
    【解决方案2】:

    正如 MarkJ 所说,您真正能够调试的唯一方法是在进程中。使用免费的 Visual Studio 2008 C++ Express Edition(或者更好的 Visual Studio 2008 Professional,如果你有的话,它可用于90 day trial)和 PDB。

    为确保您正在创建 PDB,请进入 Visual Basic,检查 P) 项目 / P) 属性 并单击 编译强>标签。确保选中“创建符号调试信息”。

    接下来启动 Outlook,并从 Visual Studio (T) 工具 / 附加到进程附加到该进程。确保您的 Ocx 显示在模块窗口中,然后加载 PDB(右键单击模块窗口中的 Ocx)。您可能必须在解决方案属性中添加源代码(有关如何执行此操作的更多详细信息,read this post)。

    第一次有点头疼,但一旦你能做到,它就变得相当容易了,而且比试图从日志中确定发生了什么要容易得多。

    【讨论】:

    • +1。为避免在解决方案属性中添加源代码,请注意 Visual Studio 在调试计算机上查找源代码的路径与构建 OCX 时在构建计算机上的路径完全相同。最简单的方法是在同一台机器上构建和调试。否则,您可能需要摆弄 SUBST 来创建虚拟驱动器 - 或者认真使用 Symbol Server。我已经添加了一些链接到我关于这个问题的答案,感谢提出它。
    【解决方案3】:

    我对 OCX 没有太多想法。

    但是,您可以使用 Visual Studio 中的一个工具,名为“activex control test tool”。

    据我所知(基于我对文档的理解),OCX 是在进程内创建的。

    【讨论】:

    • 谢谢。不过,我想在 Outlook 中调试它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多