我试图在Visual Studio中调试转储文件'发布'部署w3wp进程。
当我尝试进入代码时,它表示' PDB与图像不匹配。',即使它过去有效(我在我的机器上重建了确切的提交并指向那些生成的PDB)。
任何线索如何调试此转储/确保我可以调试未来的转储?
由于
答案 0 :(得分:0)
一般情况下,即使源代码相同,您也不能使用为不同构建生成的pdbs - 调试器会放置一个guid和age(一个计数器),每次构建都会更改。在调试器甚至尝试使用pdb之前,这两个值必须匹配。
话虽如此,您可以尝试用chkmatch强制执行此操作。如果你很幸运,你的新版本将具有足够相似的布局而不是发布版本。为了提高您的机会,请确保构建环境尽可能相似 - 包括源代码位置(源文件的绝对路径长度可能会影响二进制文件中的内部布局)。
如果您没有在原始版本中获得调试信息,那么就无法工作。
为了确保将来不会遇到这些问题,请始终使用调试信息构建版本,然后将这些pdb保存为已发布的版本。
编辑:
对于C#项目,pdbs在项目属性中控制 - >构建 - >高级构建设置 - >调试信息。将其设置为" pdb-only"在发布版本和"完整"在调试(应该是默认)。仅Pdb不会影响发布版本的性能。
如果您控制部署环境,可以使用发布二进制文件正确部署pdbs - 可能会改进转储(不确定)。
如果您将二进制文件提供给最终用户,通常最好将pdbs保留给自己,如果您想限制逆向工程。
如果您关心特定版本的二进制文件,任何情况下都会保留它们。