无法使用 Visual Studio 2010 调试 C++ BHO DLL

Posted

技术标签:

【中文标题】无法使用 Visual Studio 2010 调试 C++ BHO DLL【英文标题】:Unable to debug C++ BHO DLL with Visual Studio 2010 【发布时间】: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 一起工作的问题仍然存在...... blogs.msdn.com/b/ieinternals/archive/2012/03/23/… 您是否设法使用了两个答案之一? 【参考方案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只运行一个进程(而不是每个标签一个)。 也许这是您尝试调试时遇到的问题...

【讨论】:

以上是关于无法使用 Visual Studio 2010 调试 C++ BHO DLL的主要内容,如果未能解决你的问题,请参考以下文章

Visual studio 2010解决方案资源管理器中没有“解决方案(*个项目)”怎么调出来

无法使用 Visual Studio 2010 调试 C++ BHO DLL

无法在 Visual Studio 2010 c# 中使用 SoundPlayer 播放声音

在 Visual Studio 2010(64 位操作系统)中无法使用水晶报告

无法使用带有 Visual Studio 2010 的 Windows 窗体恢复设计器视图窗口

opencv 和 Visual Studio 2010 无法从子目录加载图像