2

Delphi 7 编译器似乎在链接阶段崩溃。

这是错误:

模块“dcc70.dll”中地址 00C01A1A 的访问冲突。读取地址 F0002104。

4

1 回答 1

3

当在项目选项链接器配置中打开生成远程调试符号 (RSM) 时,如果 try..except 处理程序中使用的异常对象的属性在 Delphi 7 的单元的最终确定中,则可能会发生这种情况。

procedure Log(m: string);
begin end;

initialization
finalization
  try
  except
    on E : exception do
      Log(e.className);
  end;
end.

解决这个问题的方法可能在其他情况下很有用。为了解决这个问题,SysInternals procmon.exe 被用来跟踪 dcc32.exe,发现它在访问 rsm 文件生成期间崩溃了。(很难通过使用 procmon 跟踪 Delphi IDE 来确定这一点,因为 IDE 会在崩溃后记录许多其他事情)。比较成功构建 rsm 与失败构建的文件内容,从错误文件中的点显示要调查的单元名称。考虑到该单元与以前的工作副本的差异,然后在该单元的每次更改之后尝试 2 次编译,从而隔离了确切的问题。

不知道为什么第一次编译不会导致崩溃,但是在没有任何更改的情况下第二次编译会导致崩溃。

于 2013-06-09T12:39:36.830 回答