c++ - msvc "the breakpoint will not currently be hit"

标签 c++ visual-studio-debugging

MSVS 2013:我有一个静态库的 VC 项目和 C++ 代码,我想从我的 exe 项目中进入,它们位于同一解决方案中。但是,调试器一直告诉我它不会遇到断点,因为它无法根据静态库的调试符号加载(“当前不会遇到断点。没有为该文档加载任何符号”)。同一解决方案中的其他静态库工作。我最近刚刚添加了新的,因为我想进入其中的一些代码以查看出了什么问题。我添加了一个从 exe 到 lib 项目的构建依赖项,不知道这是否有任何影响,但我认为它不会造成伤害。我也尝试过清理和重建。什么可能是提示,什么是我没有得到的:为什么 VS 在获得源代码时首先尝试加载调试符号?

有趣的是,我有一个不同的解决方案,也使用完全相同的静态 lib 项目,它在那里工作,所以问题似乎不是 lib 项目中的困惑设置。我比较了两个 exe 项目的所有链接器和编译器设置,没有发现任何可疑的差异。

非常感谢任何关于问题的想法。

最佳答案

这有几个可能的原因:

  1. 您设置断点的函数已被内联(检查您的链接时优化标志 /LTCG 并禁用任何)
  2. 您在没有调试信息的情况下构建了您的库(检查 /DEBUG 标志)
  3. 附加调试器时,Visual Studio 找不到包含调试信息的 .pdb 文件(这会在输出窗口中产生警告)
  4. 上述编译器和链接器选项不匹配(在这种情况下您应该看到警告)

尝试以下操作:对静态库和您正在运行的可执行项目使用默认的调试版本。在您的可执行项目中引用库项目,并且不要显式地将库添加到 Linker->Input->Additional Dependencies。

关于c++ - msvc "the breakpoint will not currently be hit",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34268305/

相关文章:

.net - 如何调试asp.net mvc 4 源代码?

c# - .PDB 文件未生成

c++ - 程序崩溃而没有错误消息

c++ - Boost.Asio 应用程序在创建接受器对象时抛出异常

c++ - 为什么不覆盖基类函数?

c++ - typeid(T) 是在运行时还是编译时求值?

c++ - 如何将 std::vector<char*> 转换为 char**?

c# - 在路径 "....vscode/extensions/ms-vscode.csharp-0.3.7/coreclr-debug/debugAdapters/OpenDebugAD7.exe."上找不到 DebugAdapter bin 文件夹

c++ - VS代码忽略了C++调试中的断点

c# - VS 2008 中未定义的 Web.config 错误