我编写(和销售)的软件在分发之前经过压缩和加密。每次发布新版本时,我都会在压缩和加密之前保留所有 .map 文件和生成的二进制文件,包括 exe。
当它在客户的机器上崩溃时,我会得到一个小型转储。我在 Visual Studio 中打开这些小型转储并在那里进行探索。
通过在 .map 文件中搜索地址,我充分利用了这些小型转储。这通常会让我进入代码的正确区域,并且我通常可以推断崩溃发生的原因并修复它,但这非常耗时。
如果我可以在调试 minidump 时使用从原始构建中保存的符号,那将会很有帮助。
我的问题是我收到有关无法找到正确符号的警告。我的研究让我相信这是因为客户端机器上 exe 的校验和与 Visual Studio 构建的 exe 的校验和不匹配。我明白为什么,它已被压缩和加密。当然校验和不匹配。
我想我可以手动编辑小型转储或更改已保存二进制文件的校验和以匹配可分发的校验和。我更愿意操作存储的副本,这样我就不必修改每个进入的转储,但我会很高兴。
所以,我的问题是:我怎样才能找到这些校验和并找出我应该用什么来替换它们?作为一个辅助问题:有没有更好的方法?