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

3
我正在尝试使用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。

请确保您附带本地代码调试器。 - Roman R.
我刚刚将我的IE浏览器从11降级到8,现在一切正常。 然而,如何使调试器与IE 11配合仍然是个问题... - Dragomir Goranov
http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx - Hans Passant
你成功使用了这两个答案中的一个吗? - manuell
2个回答

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

enter image description here

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

1
请检查此注册表键 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\TabProcGrowth,如果它的值不是零,请将其设置为零,这将使 Internet Explorer 仅运行一个进程(而不是每个选项卡一个进程)。也许这就是您在尝试调试时遇到的问题...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接