pdb 不匹配或未找到 - 在窗口中调试

pdb mismatched or not found - Debugging in windows

本文关键字:窗口 调试 不匹配 pdb      更新时间:2023-10-16

我是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未加载时。

我四处搜索以检查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位于我复制从服务器生成的exeTeamCity目录中。

我在这里错过了什么吗?

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

使用在构建exe期间生成的pdb,我能够调试dump文件。

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