Delphi 7 编译器似乎在链接阶段崩溃。
这是错误:
模块“dcc70.dll”中地址 00C01A1A 的访问冲突。读取地址 F0002104。
当在项目选项链接器配置中打开生成远程调试符号 (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 次编译,从而隔离了确切的问题。
不知道为什么第一次编译不会导致崩溃,但是在没有任何更改的情况下第二次编译会导致崩溃。