我是Windows编程环境的新手。如果你能帮助我,我将不胜感激:
我在Controller.exe
构建服务器上构建了一个名为TeamCity
的应用程序。应用程序的构建会生成exe
文件和pdb
文件。
当我在部署计算机上运行Controller.exe
时,它会崩溃并生成转储。
在应用程序中,我使用以下命令启用了转储崩溃:
unsigned long stackSize = 16384;
SetThreadStackGuarantee(&stackSize);
SetUnhandledExceptionFilter(WriteLargeMiniDump);
函数WriteLargeMiniDump()
成功写入转储。我知道这一点,因为当我在我的开发机器上运行Controller.exe
时,它会生成转储,我可以成功打开它并在源代码中看到崩溃行。
但是,在TeamCity服务器生成exe
和pdb
的情况下,我无法调试转储。当我在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
的同一目录中。
我在这里错过了什么吗?
答案 0 :(得分:0)
我能解决这个问题。问题是该项目的原始作者已将pdb
签入到TeamCity
正在构建的SVN存储库中。因此,exe
生成的pdb
与pdb
不匹配。根据MSDN文档,我们必须使用在exe
构建期间生成的pdb
。
使用exe
构建期间生成的dump
,我可以调试pdb
文件。
帮助我了解gpio load spi
个文件的重要链接是:https://www.wintellect.com/pdb-files-what-every-developer-must-know