【问题标题】:Can no longer debug ActiveX controls in Visual Studio 2008不能再在 Visual Studio 2008 中调试 ActiveX 控件
【发布时间】:2010-06-11 08:39:52
【问题描述】:

很长一段时间我都会在我的 ActiveX 控件的启动代码中抛出 DebugBreak() 或 ASSERT(false),加载 IE,转到托管我的控件的 localhost 页面,等待对话框出现,然后调试我的应用程序。我也可以通过将 IE 设置为容器来在调试器下启动它。

我在 2 个月内第一次再次尝试,但现在不再有效。如果我使用 ASSERT(false) 方法,当我得到 Visual C++ 调试对话框并单击“重试”时,IE 会在没有任何调试器活动的情况下关闭。当我尝试从 VS2008 启动并希望 DebugBreak() 在我加载页面后启动时,VS2008 确实中断了,但它显示“RPC 服务器不可用”或“RPC 客户端调用失败”。我永远不允许在调试器中使用我的应用程序,并且它不会出现在 VS 的模块列表中。 VS2008 中的堆栈跟踪仅包含 Microsoft DLL 和模块,而不是我的代码的提示。

我认为是我通过 Windows 更新获取的东西破坏了这一点。有没有其他人见过这个问题并知道如何让它消失?就目前而言,我现在完全无法调试我的 ActiveX 控件。

【问题讨论】:

  • 你试过重启windows吗?如果是的话我猜你需要重新安装VS。我在使用 vs2005 时遇到过这样的问题,在大多数情况下重启对我有帮助。

标签: visual-studio-2008 activex debugging


【解决方案1】:

请注意,如果您使用的是 64 位 Windows,则需要在 32 位注册表中创建 TabProcGrowth,而不是在普通注册表中。

为此,请打开 %systemroot%\syswow64\regedit 而不仅仅是 regedit。

更多详情请见http://support.microsoft.com/kb/305097

【讨论】:

    【解决方案2】:

    我遇到了和你一样的问题,但后来发现原因是 IE 本身,而不是 Visual Studio - 这是我的一个朋友给我看的:
    - IE8 为每个选项卡打开多个进程至少一个,再加上一个。这会使调试器感到困惑。
    - 您可以禁用此“功能”并且(对我而言)调试开始工作,
    - 我仍然无法“附加到进程”,但将 IE 作为调试应用程序很好。

    以下是禁用它的方法:

    要解决此问题,您需要按照以下步骤禁用 LCIE 的进程增长功能:

    1) 打开 RegEdit
    2) 浏览到 HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main
    3) 在此键下添加一个名为 TabProcGrowth
    的 dword 4) 将 TabProcGrowth 设置为 0

    如果您在 Vista 或更高版本上遇到同样的问题,您还需要关闭 >保护模式。

    到目前为止,我已经在 Win XP 上进行了测试。帮助来自此链接: http://weblogs.asp.net/abdullaabdelhaq/archive/2009/06/01/VS-Debug-Problem-with-IE8.aspx

    祝你好运!

    【讨论】:

    • 这很好用,但我发誓我可以在 TabProcGrowth 设置为 1 的情况下使用它。
    【解决方案3】:

    您能否在 Visual Studio 中使用“附加到进程”并确保将“附加到”设置为本机代码?

    【讨论】:

    • 附加的结果与我在调试器下启动或尝试使用断言闯入的结果相同。我的控件仍然没有显示在 VS 的模块窗口中,我的断点是所有的“轮廓圆圈”表明他们不会闯入。
    【解决方案4】:

    如何在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 源代码。

    【讨论】:

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