【问题标题】:Step into source code of linked library步入链接库源码
【发布时间】:2017-03-29 05:17:47
【问题描述】:

我有一些已编译的 C++ 库(.lib,不是我自己编译的),我将它们链接到我自己的 C++ 项目中。我也拿到了源代码。

是否可以在调试时使用源代码从这些库中单步执行函数?如何告诉 Visual Studio 调试器使用这些源代码文件?

我猜.lib 文件需要某种调试信息 - 我可以看看他们是否得到了这些信息?

【问题讨论】:

  • Pretty close,但也许我会找到更好的。
  • Also very close,但语言错误。您能否检查一下这是否也适用于 C++?

标签: c++ visual-studio debugging


【解决方案1】:

Microsoft 编译器将调试信息存储在单独的 .pdb 文件中。当 VS 加载可执行文件使用的库(例如 myLib )时(通过附加到正在运行的实例,或通过直接在调试器下启动它),它还会搜索 myLib.pdb。如果它找到了,当你尝试单步执行这样的函数时,它会首先询问你对应的源的位置。如果提供正确,您将能够对其进行调试。

没有 .pdb 文件,我不知道在源代码级别调试外部库的任何方法。

另外,如果没有 .pdb 文件,但您有外部库的源代码,是否可以使用调试符号(.pdb 文件)重新构建它?

【讨论】:

  • 实际上我目前正在尝试重建它们以获取匹配的 PDB 文件。但是需要一些实验,因为我不知道哪些选项用于我已经得到的编译二进制文件。成功后会回来的。
  • @ZoolWay,如果 George Spatacean 的回复对您有帮助,如果可能,请将其标记为答案,这样可以帮助遇到与您相同问题的其他社区成员:)
  • 好的,我设法重建了它(WebRTC native 相当复杂)。所以我得到了libpdb 文件。即使我使用Step into specific,它仍然不会进入源代码。猜猜这不适用于混合调试器 - 这是混合的托管和非托管代码。
猜你喜欢
  • 2013-12-05
  • 2013-05-31
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多