假设我有一个用 VC++ 6.0 编写的自定义服务,并且我已将其作为特定版本的一部分发布。不幸的是,我在构建二进制文件时没有使用 pdb。
稍后我的客户报告了一次崩溃,我不得不让 pdb 确定崩溃原因。我现在使用的 pdb 是否足以识别崩溃点。
换句话说,我已经分别获取了二进制文件和 pdb,但是在获取二进制文件后我没有对源代码进行任何更改。
我的理解是,即使他的符号在构建日期和时间方面不会匹配,但在内容方面会匹配。
我的理解正确吗?
最佳答案
您需要确保使用完全相同的编译器版本(补丁可能会更改代码生成和地址)、编译器/链接器选项集、相同的库版本以及相同的源进行编译,以确保地址匹配。如果您能够做到这一点,那么您应该能够获取稍后生成的 pdb。
然而,即使它不完全匹配,它也可能使您足够接近以通过检查看到错误。
关于c++ - 符号文件和调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503874/