无法使用 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 位操作系统)中无法使用水晶报告