关于编译器选项“Assembly,Machine Code and Source(/ FAcs)”

我正在维护使用VS6.0构build的遗留应用程序,但现在它被移动到VS2005,在编译过程中它创build了很多.COD文件,我发现这个“汇编,机器码和源(/ FAcs)”编译器开关负责为了这。

谁能告诉我这些.COD文件有什么用处,这怎么用呢? 这是否有任何作用是崩溃转储分析?

谢谢Tom

一般来说,它们用于检查编译器生成的代码。 有多种原因可能会导致这种情况。 有时候你想看看代码是如何优化的。 有时候你的代码并不像你期望的那样行事,你想看看它是你自己的代码中的错误还是编译器中的错误。

在崩溃转储分析中,您可能会使用.COD文件,但几乎只能作为最后的手段。 Visual Studio 2005通常可以显示处理崩溃转储时的源代码和反汇编。 如果您没有PDB(或源文件),您只需要回退.COD文件。 要将.COD文件与故障转储一起使用,还需要一个.MAP文件。 .COD文件中的地址只与编译器创建的.OBJ文件有关。 .MAP文件是必要的,以找出.OBJ文件链接到EXE / DLL的位置。

所以,如果你有.COD文件和相应的.MAP文件,你可以使用它们找出代码中的哪一行对应于崩溃转储中的一个地址。 不过,使用IDE或者Windbg要容易得多。

请注意,免费的Express版本的Visual Studio 2005不支持调试崩溃转储。 如果您有Express版本,则需要使用Windbg来分析故障转储。