pdb不匹配或找不到 - 在Windows中调试

时间:2017-08-08 21:39:04

标签: c++ windows visual-studio-debugging

我是Windows编程环境的新手。如果你能帮助我,我将不胜感激:

我在Controller.exe构建服务器上构建了一个名为TeamCity的应用程序。应用程序的构建会生成exe文件和pdb文件。

当我在部署计算机上运行Controller.exe时,它会崩溃并生成转储。

在应用程序中,我使用以下命令启用了转储崩溃:

unsigned long stackSize = 16384;
SetThreadStackGuarantee(&stackSize);
SetUnhandledExceptionFilter(WriteLargeMiniDump);

函数WriteLargeMiniDump()成功写入转储。我知道这一点,因为当我在我的开发机器上运行Controller.exe时,它会生成转储,我可以成功打开它并在源代码中看到崩溃行。

但是,在TeamCity服务器生成exepdb的情况下,我无法调试转储。当我在visual studio 2015中打开转储文件并尝试Debug with Native Only时,它表示pdb未加载。

我用google搜索pdb文件是否正确。所以我将Debugging Tools for windows下载为symchk.exe

当我运行symchk.exe时,它会出现以下错误:

SYMCHK: Controller.exe FAILED  - Controller.pdb mismatched or not found

SYMCHK: FAILED files = 1
SYMCHK: PASSED + IGNORED files = 0

Controller.pdb位于我复制exe服务器生成的TeamCity的同一目录中。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我能解决这个问题。问题是该项目的原始作者已将pdb签入到TeamCity正在构建的SVN存储库中。因此,exe生成的pdbpdb不匹配。根据MSDN文档,我们必须使用在exe构建期间生成的pdb

使用exe构建期间生成的dump,我可以调试pdb文件。

帮助我了解gpio load spi个文件的重要链接是:https://www.wintellect.com/pdb-files-what-every-developer-must-know