Visual studio 阻止Visual Studio使用缓存的.pdb 我做了以下实验:我创建了一个静态链接的C++库解决方案MyLibrary(我从MSDN示例中获取代码:)并构建它。然后,我使用VisualStudio(2017)中的控制台应用程序模板创建了另一个C++解决方案MyConsoleApp。我将MyLibrary.lib文件复制到MyConsoleApp项目的根目录中,并将MyLibrary.lib添加到Linker->Input->其他依赖项中(当然也必须复制标题)。我没有做的是复制MyLibrary.pdb文件

Visual studio 阻止Visual Studio使用缓存的.pdb 我做了以下实验:我创建了一个静态链接的C++库解决方案MyLibrary(我从MSDN示例中获取代码:)并构建它。然后,我使用VisualStudio(2017)中的控制台应用程序模板创建了另一个C++解决方案MyConsoleApp。我将MyLibrary.lib文件复制到MyConsoleApp项目的根目录中,并将MyLibrary.lib添加到Linker->Input->其他依赖项中(当然也必须复制标题)。我没有做的是复制MyLibrary.pdb文件,visual-studio,pdb,Visual Studio,Pdb,我本以为会收到链接器关于丢失的.pdb文件的警告,但事实并非如此。然后,我只将MyConsoleApp移动到另一台机器上,并尝试再次构建它,这次得到一个丢失的.pdb链接器警告。似乎Visual Studio在计算机上某处构建解决方案时正在存储.pdb文件,并且在链接同一计算机上的其他解决方案时能够使用这些.pdb文件 我希望能够禁用此行为,或者能够删除缓存的.pdb,以便我可以确保在与其他开发人员共享工作时,他们不会收到我没有在自己的计算机上获得的警告。Visual Studio不会缓存.pd

我本以为会收到链接器关于丢失的.pdb文件的警告,但事实并非如此。然后,我只将MyConsoleApp移动到另一台机器上,并尝试再次构建它,这次得到一个丢失的.pdb链接器警告。似乎Visual Studio在计算机上某处构建解决方案时正在存储.pdb文件,并且在链接同一计算机上的其他解决方案时能够使用这些.pdb文件


我希望能够禁用此行为,或者能够删除缓存的.pdb,以便我可以确保在与其他开发人员共享工作时,他们不会收到我没有在自己的计算机上获得的警告。

Visual Studio不会缓存.pdb文件。这里发生的事情是,原始.pdb文件的绝对路径存储在生成输出(.exe、.dll或.obj文件)中,Visual Studio可以基于此使用它


请检查此答案以了解防止出现这种情况的方法:。

DLL存储pdb文件的路径。通过使用Dumpbin.exe/headers,可以使用.rdata部分存储此信息,调试目录显示其中的内容。功能,而不是bug。将没有调试信息的库强加给其他开发人员并不十分合理,除非您真的想阻止他们修复您的bug。
dumpbin/pdbpath:verbose StaticLib1.dll
确实显示了.pdb的路径(如果我将项目构建为动态库),但没有显示静态库的任何内容。如何找到静态库的.pdb路径?找到它是链接器的工作。当您链接EXE或DLL项目中的静态库时。在问题中描述的场景中,它如何从库项目的中间输出目录中找到它?.lib文件中存储路径的方式是否与.dll类似?编辑:对不起,我在问题中没有提到我发现使用了中间输出目录中的.pdb,我在自己的回答中提到了这一点。项目数据库存储调试信息,/Fd compile选项。这与你的问题无关。