当我运行调试器时,没有命中在Visual Studio中为C++项目设置的断点。Visual Studio中C++的断点
当我启动调试器我得到警告
调试信息“IEXPLORER.EXE”无法找到或不匹配。没有符号加载。你想开始调试吗?
我打yes继续,但随后的断点我设置有一个警告说:
断点不会被击中当前。此文档没有符号加载
如何在调试项目时加载符号?我需要改变它的构建方式吗?
当我运行调试器时,没有命中在Visual Studio中为C++项目设置的断点。Visual Studio中C++的断点
当我启动调试器我得到警告
调试信息“IEXPLORER.EXE”无法找到或不匹配。没有符号加载。你想开始调试吗?
我打yes继续,但随后的断点我设置有一个警告说:
断点不会被击中当前。此文档没有符号加载
如何在调试项目时加载符号?我需要改变它的构建方式吗?
我要检查的第一件事是您正在调试模式下构建。有一个组合框,您可以在工具栏中选择Release和Debug模式。
在Release中,不包含调试信息。
第二件事是确保您将调试附加到正确的过程。您可以开始连接到进程(F5),也可以开始连接(Ctr-F5),然后手动连接(通过“调试”菜单,附加到进程)。
IEXPLORER
是您当前附加的过程。你确定这是正确的吗?
最新的Internet Explorer有不同的过程模型,它固有地禁用了ActiveX控件的调试(我认为你正在尝试调试)。有一个注册表设置,但可能会帮助你。
HKLM \软件\微软\的Internet Explorer \首页> TabProcGrowth:DWORD
将该值设置为0,你应该能够控制调试。
我使用的是IE8,因此我尝试设置此键并重新启动Visual Studio。不幸的是,我仍然没有得到任何输出。 – opsb 2010-11-01 12:14:43
解决了我的问题 – michaelr524 2013-02-20 19:40:32
它看起来像你想如果Internet Explorer给你的麻烦连接到正确的流程来调试扩展到Internet Explorer(工具栏,BHO等)
,你可以让你的进程崩溃上然后JIT调试它。在DllMain中使用DbgBreakPoint来做到这一点。 Visual Studio应该弹出一个窗口,询问您是否要调试它。这有点落后,但应该帮助您避免IE浏览器可能会执行的所有过程。
这也将允许您看到来自其他问题的调试输出,因为您将附加正确的过程。
您必须确保的三件事情:
.pdb
文件,其中包含在那里你试图打破代码的DLL,并确保该.pdb
文件包含源信息。如果你告诉我你使用哪种IDE /语言,我可以帮你确保。.pdb
文件;一个简单的方法是复制。pdb文件接近你的二进制文件。如果加载了.pdb
文件,Visual Studio菜单Debug\Windows\Modules
中的工具窗口应在DLL文件行处的'Symbol Status'列中显示'Symbol Loaded'。有了这个,你的断点应该没问题。
我遇到了这个问题,我能解决它的唯一方法是覆盖“附加到进程”中的“自动确定要调试的代码类型”选项。一旦我清除了“Silverlight”调试类型,那么所有正确的模块出现在iexplore.exe下,我的断点点亮了,并且我能够适当地进行调试。不知道为什么这是必要的,或者一直都是这样,但这对我来说是有效的。
我正在构建一个IE插件,所以是的,它应该是我附加的IEXPLORER。我打F5以调试模式启动,当它运行时,Stop-Debugging菜单项可用,所以我认为它确实在运行。 – opsb 2010-11-01 11:56:09