Debugging 我如何调查“问题”;“未加载PDB文件”; 我正在调试一个VS 2008 C++项目。该项目链接到一个静态库,其PDB文件与.lib文件位于同一文件夹中。过去一切都很好。已加载lib文件的PDB,并且在调试期间可以访问源文件。但现在它突然无法加载,没有任何变化

Debugging 我如何调查“问题”;“未加载PDB文件”; 我正在调试一个VS 2008 C++项目。该项目链接到一个静态库,其PDB文件与.lib文件位于同一文件夹中。过去一切都很好。已加载lib文件的PDB,并且在调试期间可以访问源文件。但现在它突然无法加载,没有任何变化,debugging,visual-c++,pdb,Debugging,Visual C++,Pdb,那么,如何在VC++中进行诊断以确保IDE找到并加载pdb呢 更新: 我将“使用库依赖项输入”的EXE项目设置更改为“是”,现在我可以访问库的源代码了,尽管它没有回答我最初的问题,即为什么库的pdb突然无法加载 进一步的问题 我的理解是:EXE文件静态链接到LIB文件,所以LIB中所有引用的二进制代码都已经包含在EXE二进制文件中。那么我真的需要LIB文件吗?而且,我是否需要LIB pdb文件,或者调试信息是否也集成到EXE的pdb文件中?如果pdb不是与LIB的实际构建相关的pdb,则无论您做

那么,如何在VC++中进行诊断以确保IDE找到并加载pdb呢

更新:

我将“使用库依赖项输入”的EXE项目设置更改为“是”,现在我可以访问库的源代码了,尽管它没有回答我最初的问题,即为什么库的pdb突然无法加载

进一步的问题


我的理解是:EXE文件静态链接到LIB文件,所以LIB中所有引用的二进制代码都已经包含在EXE二进制文件中。那么我真的需要LIB文件吗?而且,我是否需要LIB pdb文件,或者调试信息是否也集成到EXE的pdb文件中?

如果pdb不是与LIB的实际构建相关的pdb,则无论您做什么,它都不会加载它。你百分之百确定什么都没有改变吗?@RogerRowland我很确定什么都没有改变。我重新编译了lib项目,并确保重新生成pdb。有没有办法在加载PDB时查看dubugger的详细信息?我不知道,但在调试会话期间或分析崩溃转储时,您可以查看模块选项卡,看看是否可以通过手动指定PDB位置来解析符号-它可能会提供附加信息。lib和PDB是否来自同一日期和时间?即使是时间戳中的差异也足以导致PDB加载失败。库的PDB不会合并到使用它的EXE的PDB中,因此在调试时确实需要库的PDB,因为这会将库中的函数与其对应的源代码(它不是EXE项目的一部分)联系起来,