我有一个测试可执行文件,该文件链接了Windows 10上Visual Studio 2019(16.4.2)中的C ++静态库。启动调试器时,测试提示和库代码中的所有断点都被挖空了,并带有工具提示,即PDB找不到:
“该断点当前不会被命中。该文档尚未加载任何符号。”
启动调试器后,从“未加载任何符号”屏幕上的链接手动浏览可执行PDB也会失败,并显示以下消息:
“在此文件夹中找不到匹配的符号文件”
奇怪的是文件在那里,它是最新的,PDB浏览器允许我选择它。这是正确的PDB(在“链接器”>“调试”设置中指定),而不是较小的中间文件夹。
我正在构建Debug | x86,并在Debug | x64中遇到相同的问题。我的测试可执行文件正在使用Google Test 1.8.1.2版。
我尝试删除所有中间文件和输出,关闭/重新打开IDE并重建解决方案,但这并没有帮助。 PDB不会被其他项目中同名的PDB覆盖。
我的项目设置如下:
测试可执行文件和静态库:
C / C ++>常规:调试信息格式= 程序数据库(/ Zi)。
测试可执行文件:
链接器>调试:生成调试信息= 生成调试信息(/ DEBUG)
链接器>调试:生成程序数据库文件= $(OutDir)$(TargetName).pdb
第3方Google测试PDB存在于输出文件夹中,由内部版本从我正在使用的NuGet软件包中复制。我检查了这些是正确的PDB。我认为无论如何我都不需要这些,因为我没有尝试调试任何Google测试代码。
我尝试创建一个新的“ Hello world”测试可执行文件,并且可以对其进行调试而没有任何问题。