【问题标题】:Unable to debug C++ BHO DLL with Visual Studio 2010无法使用 Visual Studio 2010 调试 C++ BHO DLL
【发布时间】:2014-01-05 02:57:22
【问题描述】:

我正在尝试使用 Visual Studio 2010 中的 ATL 项目创建 BHO。我正在关注这篇文章: http://msdn.microsoft.com/en-us/library/bb250489.aspx

当我到达“试驾”这一点时 - 我按 F5 ,项目编译成功,但我收到一个错误弹出窗口:“无法启动程序'...HelloWorld.dll'

我尝试了这里描述的解决方案:Unable to start program ATL Project C++

我在“项目-属性-配置属性-调试-命令”中设置了“C:\Program Files (x86)\Internet Explorer\iexplore.exe”。我按 F5 并收到另一个警告:

“'iexplore.exe'的调试信息找不到或不匹配。找不到或打开PDB文件

要继续调试吗?"

我回答“是”并启动 IE,我的所有断点都被禁用并且调试器退出。如果我尝试附加到正在运行的 IE 实例,调试器不会退出,但我的所有断点都会再次被禁用。

用 Visual Studio 2010 调试 C++ BHO DLL 的正确方法是什么。我的 IE 版本是 11。

【问题讨论】:

  • 确保您使用本机代码调试器进行附加
  • 我刚刚将我的 IE 从 11 降级到 8,现在一切正常。但是,关于如何使调试器与 IE 11 一起工作的问题仍然存在......
  • 您是否设法使用了两个答案之一?

标签: c++ visual-studio-2010 atl bho


【解决方案1】:

使用Process Explorer from Sysinternals,您可以找到托管该页面的 iexplore.exe 进程的 PID,因为当您将鼠标悬停在 IE 进程上时,Process Explorer 能够显示每个“选项卡”的名称。过程。

识别 PID 后,使用附加到进程。

编辑:如果你想从头调试你的 BHO(在 SetSite 等之前),有一个丑陋的 hack:在DllMain (ATTACH_PROCESS)中使用MessageBox 并使其显示当前PID)。附加到进程,然后关闭消息框。

【讨论】:

    【解决方案2】:

    检查这个注册表项HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth,如果不是,则将其值设置为零,这将使Internet Explorer只运行一个进程(而不是每个标签一个)。 也许这是您尝试调试时遇到的问题...

    【讨论】:

      猜你喜欢
      • 2012-01-27
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      相关资源
      最近更新 更多