【发布时间】:2013-01-24 00:06:25
【问题描述】:
- 第 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 无法使用的提示。如果新版本有问题,工作人员会恢复为重命名的可执行文件……我会失去符号支持,从而更难找到那里的问题。它变得非常烦人:-(
-
这可能是一个愚蠢的问题,但是为什么不更改程序集名称而不是之后更改文件名呢?无论如何,这是一种奇怪的行为。
-
我在创建新版本时重命名文件 - 我将副本保存为“myProgram [date].exe”,以备需要恢复时使用。但最近,由于未处理的异常,工作人员一直在恢复使用这些重命名的文件。这种奇怪的行为使跟踪这些异常变得更加困难。