断点未命中
Breakpoint not hitting
我将一个应用程序从VC6移植到VS 2008。我在发布版本中重建了应用程序。 Pdb 文件在 exe 所在的文件夹中可用。 但是当我加载应用程序并放置断点时,我收到以下消息
"断点目前不会被命中。尚未加载此文档的符号"
问题的原因是什么?
调试器找不到应用程序或 PDB。
启动程序时,"输出"窗口中会显示准确加载的二进制文件。 确保加载了正确的文件。 当一切正确加载时,输出如下所示:
"hacks_vs10.exe":已加载 'C:\Users\john\Documents\Visual Studio 2010\项目\hacks_vs10\x64\调试\hacks_vs10.exe', 已加载符号。
当找不到 PDB 时,它不是说"已加载符号",而是说:
找不到或打开 PDB 文件
请确保首先运行正确版本的应用程序(检查运行路径),然后确保 PDB 位于该目录中。您可以通过调整"项目>属性...>链接器>生成程序数据库文件"来更改生成 PDB 的位置
调试器找不到与放置断点的源位置关联的代码。
这可能有很多原因。我最常发现的是一段真正没有编译的代码。(由于预处理器条件或死代码删除)。
我想也可能有其他原因(例如内联,尽管理论上,编译器可以为所有内联生成正确的映射。我不知道VS2008在这里做什么)。
您确定要将断点放在应该执行的代码路径中吗?
您提到的 PDB 文件可能与发布版本无关,
发布版本中通常没有调试信息(尽管您可以在必要时启用它,但应该预期由于编译器优化而产生令人惊讶的效果)。
因此,您只能在已知的 DLL 入口点上设置断点(可以通过模块列表视图 - 自从我大量使用 Visual Studio 以来已经有一段时间了)或直接在程序集指令上设置断点。
请注意,您可以使用调试符号编译应用程序的一部分。
我刚刚解决了类似的问题
- 我
- 重新引用了我所有的 DLL
- 转到(工具->选项、"项目和解决方案"、"生成并运行")并将"项目过期时运行时"设置为"提示生成"
我不确定其中哪一个解决了问题,但它确实解决了!
- 无法删除指针,已触发断点
- 条件断点在不应该触发时触发
- GDB 断点在 Mac 上是不准确的
- 在 vscode 中运行时无法暂停或设置断点
- 不会命中此断点
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 如何在进入动态打开的共享库时设置断点?
- 为什么断点显示数组的第二个值是一个大数字?额外学分工作
- 代码在 msvcrt .dll函数上设置断点失败
- 如何在引用上设置数据断点
- 无法在visual studio 2017(本机c++)中禁用数据断点
- 为什么在c++中使用Delete[]会出现跟踪/断点错误
- for循环的条件只有在遇到断点后才生效
- 项目名称.exe 已触发断点
- 视觉对象触发了断点 c++
- 实现在多线程代码中安全恢复的断点
- 如何在 gdb 中的所有构造函数上同时为 C++ 对象设置断点?
- C/C++ 经过的流程周期,不包括断点处
- 在 Visual Studio 2012 中未命中断点
- 无法在 XmlHttpRequest 模块上获取断点(Javascript 引擎/XHR 请求)