【问题标题】:Debugging 32-bit ActiveX control with Visual Studio 2008 and IE 10使用 Visual Studio 2008 和 IE 10 调试 32 位 ActiveX 控件
【发布时间】:2013-07-24 17:26:56
【问题描述】:

在使用 IE 10 运行时,使用 Visual Studio 2008 调试我的 32 位 ActiveX 控件时,我无法命中断点。

经过深入研究,我了解到当 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth 设置为非零值时,IE 10 只能在 32 位模式下运行。这使我能够运行 32 位 ActiveX 控件。但是,这也会在使用 Visual Studio 进行调试时禁用命中断点的功能,因为要使用断点进行调试,此值必须为零。如其他问题/回复中所述:“出于调试目的,您可能会发现设置 HKCU\Software\Microsoft\Internet Explorer\Main\TabProcGrowth = 0 (DWORD) 很有帮助。这将禁用 IE 中的进程分离。”

这会创建一个 catch-22 场景,因为为了进行调试,TabProcGrowth 必须为零,但为了让 IE 10 在 32 位模式下运行,TabProcGrowth 必须为非零。

对我可以做什么有什么建议吗?

提前致谢。

【问题讨论】:

    标签: debugging visual-studio-2008 activex 32bit-64bit internet-explorer-10


    【解决方案1】:

    如何在IE.10 + WIN8 64bit + VS2008中调试C++:

    1. 将 TabProcGrowth 保持为中等(不会更改!!)
    2. 设置 VS2008 OCX 项目调试使用命令 C:\Program Files (x86)\Internet Explorer\iexplore.exe,Attach = Yes,Debugger Type=Native Only
    3. 打开 Internet Explorer 10 窗体 WIN8 任务栏。
    4. 在 Internet Explorer 10 的 url 中键入目标 ocx htm 文件路径。然后按 enter 键加载 htm。
    5. 启用 IE.10 ActiveX 模式。
    6. 当 IE10 准备好 ActiveX 模式时,运行您的 VS2008 OCX 项目,该项目会将 IE10 附加到您的断点。
    7. 再次刷新 IE.10 html 以开始调试您的 ocx 源代码。

    【讨论】:

      【解决方案2】:

      这是我发现使用 VS2013 和 IE10(Win7 64 位)调试 32 位 ActiveX 控件的方法:

      1. VS:设置OCX项目调试属性为:Command = C:\Program Files\Internet Explorer\iexplore.exe, Attach = No.
      2. 在VS中启动调试器(IE10尚未启动):如果出现警告信息(“找不到'iexplore.exe'的调试信息...”),选择“是”(继续调试)。 IE10 现在应该已经启动了。
      3. 在 VS 菜单中,转到 Debug > Attach to Process:请注意现有“iexplore.exe”进程的 ID。
      4. 在 IE10 中打开 ocx html 文件,然后返回 VS 的 Attach to Process 屏幕:刷新进程列表,然后 Attach 到新出现的“iexplore.exe”进程。
      5. 在 IE10 中刷新 ocx html 页面:这应该会将您的 VS 调试器带到您的第一个断点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多