0

在使用 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 必须为非零。

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

提前致谢。

4

2 回答 2

0

如何在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 源代码。
于 2014-04-26T23:17:59.330 回答
0

这是我发现使用 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 调试器带到您的第一个断点。
于 2014-04-29T15:18:18.990 回答