Delphi 7 コンパイラは、リンク段階でクラッシュするようです。
これはエラーです:
モジュール 'dcc70.dll' のアドレス 00C01A1A でアクセス違反が発生しました。アドレス F0002104 の読み取り。
リモート デバッグ シンボルの生成(RSM)がプロジェクト オプション リンカ設定でオンになっている場合、try..except on ハンドラで使用される例外オブジェクトのプロパティが 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 ファイル生成のアクセス中にクラッシュしたことを示しました。(IDE はクラッシュ後にログに記録される他の多くのことを行うため、procmon を使用して Delphi IDE をトレースすることによってこれを判断することは困難でした)。成功した rsm のビルドと失敗したビルドのファイルの内容を比較すると、エラーのファイル内のポイントから、調査するユニット名が明らかになりました。以前の作業コピーからのユニットの差分を考慮し、そのユニットを変更するたびに 2 つのコンパイルを試行すると、正確な問題が特定されました。
最初のコンパイルでクラッシュが発生しない理由は不明ですが、何も変更せずに 2 回目のコンパイルを行うとクラッシュが発生します。