2016-11-15 75 views
0

我得到了一些编译的C++库(.lib,不是我自己编译的),我链接到自己的C++项目中。我也得到了源代码。步入链接库的源代码

是否有可能在调试时使用源代码进入这些库的函数?我如何告诉Visual Studio调试器使用这些源代码文件?

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

+0

[Pretty close](http://stackoverflow.com/questions/4316801/pointing-visual-studio-2008-to-the-source-code-of-a-third-party-dll-for-debuggin) ,但也许我会找到一个更好的。 –

+0

[也非常接近](http://stackoverflow.com/questions/2620279/visual-studio-attach-source-code-to-reference),但错误的语言。你能否检查一下对C++是否也适用? –

回答

2

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

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

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

+0

其实我目前正在尝试重建它们以获得匹配的PDB文件。但需要一些实验,因为我不知道用于编译的二进制文件的选项。我成功后会回来。 – ZoolWay

+0

@ZoolWay,如果乔治Spatacean的回复对你有帮助,如果可能的话,请将其标记为答案,这可以帮助其他社区成员遇到同样的问题,因为你:) –

+0

好吧,我设法重建它(WebRTC原生是相当复杂的)。所以我得到了'lib'和'pdb'文件。即使我使用* Step into特定*,它也不会进入源代码。猜猜这不适用于混合调试器 - 这是托管和非托管代码混合。 – ZoolWay