无法再在Visual Studio 2008中调试ActiveX控件

时间:2010-06-11 08:39:52

标签: visual-studio-2008 activex debugging

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

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

我认为这是我通过Windows Update获得的东西打破了这一点。有没有人见过这个问题,知道怎么让它消失?就目前而言,我现在完全无法调试我的ActiveX控件。

4 个答案:

答案 0 :(得分:2)

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

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

有关详细信息,请参阅http://support.microsoft.com/kb/305097

答案 1 :(得分:1)

我遇到了和你一样的问题,但它转变的原因是IE本身,而不是Visual Studio - 这是我的一个朋友向我展示的内容:
- IE8打开了许多进程,每个选项卡至少有一个进程加一个进程。这会混淆调试器 - 你可以禁用这个“功能”和(对我来说)调试开始工作,
- 我仍然不能“附加到进程”,但将IE作为调试应用程序是好的。

以下是禁用它的方法:

  

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

     

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

     

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

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

祝你好运!

答案 2 :(得分:0)

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

答案 3 :(得分: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 Explore 10表单WIN8任务栏。

  4. 键入Internet Explorer 10的网址中的目标ocx htm文件路径,然后按Enter键加载htm。

  5. 启用IE.10 ActiveX模式。

  6. 当IE10准备好ActiveX模式时,运行你的VS2008 OCX项目,将IE10与你的断点连接起来。

  7. 再次刷新IE.10 html以开始调试您的ocx源代码。