我在我的C++应用程序上使用VS2015调试器。当我启动应用程序时,调试器给出消息PDB不匹配.exe
Loaded 'C:\MyDir\Working\x64\Debug\MyApp.exe'. Cannot find or open the PDB file
因此,我无法设置断点。
根据VS调试器以及WidDBG Symchk的说法,在.exe的同一目录下有一个.pdb文件,但它不匹配。 Symchk不提供不匹配的原因,即使使用/ v选项也是如此。
完全重建不会使此问题消失。它只发生在调试版本,并且今天刚刚开始。在今天之前,对于调试或发布版本,不匹配的pdb是没有问题的。
我使用的VS选项有:
- C++:调试信息格式=程序数据库(/ ZI)程序数据库文件名= $(IntDir)%(文件名).PDB;
- 链接器:生成调试信息=优化调试(/ DEBUG),生成程序数据库文件= $(OutDir)MyApp.pdb,生成完整的程序数据库文件=是。
单个对象的pdb文件出现在中间目录中,MyApp.pdb和MyApp.exe一起出现在输出目录中。
现在,这里是一个奇怪的部分:当删除现有的MyApp.pdb然后重新链接时,新的.pdb文件出现在当前mod时间的输出目录中。链接器运行时,pdb文件会变大(〜70 MB),但当链接器完成时,pdb文件会突然变小(〜4 MB),并且mod时间现在会在几个小时之前更改。这是非常可疑的,可能会导致pdb不匹配。
链接器的最终输出线
我怎么能强迫VS产生的调试版本匹配和正确的PDB文件?