- 第1步:我建立myProgram.exe并产生myProgram.pdb在它旁边。
- 第2步:我故意在myProgram.exe中导致崩溃。
- 步骤3:有人问我,如果我想使用Visual Studio作为调试器,和我做。
- 步骤4:Visual Studio从myProgram.pdb中加载符号。
- 第5步:我检查调用堆栈以确定崩溃发生的地点(已知)。
- 第6步:我不皱眉或看起来很困惑,因为这是应该的。
但是,如果我重命名myProgram.exe和myProgram.pdb到SomethingElse.exe和SomethingElse.pdb并重复这些步骤,结果是从步骤4起混合。据我所知,在我的生成机器上,VS将始终从重命名的PDB文件中成功加载符号。但是,在我的远程目标机上,VS永远不会加载符号 - 它总是告诉我PDB文件与可执行文件不匹配。为什么不?我打破了一个晦涩的规则吗?在任何情况下,我都在运行Visual Studio 2005。是什么导致符号不能从PDB文件加载?
我刚才测试了这另一个“远程”机器上(在我的办公室),其上不会发生这种情况。显然,对于实际的远程机器来说,有一些特定的东西......它没有联网,除了生产时间以外难以访问。所以我想我是在提示可能会导致对这些文件进行简单名称更改以使其PDB无法使用的技巧之后。如果新版本出现问题,工作人员将恢复为已重命名的可执行文件...并且我失去了符号支持,因此很难追踪那里的问题。它只是变得非常恼人的:-( – omatai
这可能是一个愚蠢的问题,但你为什么不更改程序集名称,而不是事后更改文件名吗?无论如何,这是一个奇怪的行为。 –
我重命名文件,当我创建一个新的版本 - 我保存一份副本作为“myProgram [date] .exe”,以防我需要恢复它。但是最近,由于未处理的异常,工作人员已经恢复到这些重命名的文件。这个奇怪的行为 – omatai