2

Delphi 7 コンパイラは、リンク段階でクラッシュするようです。

これはエラーです:

モジュール 'dcc70.dll' のアドレス 00C01A1A でアクセス違反が発生しました。アドレス F0002104 の読み取り。

4

1 に答える 1

3

リモート デバッグ シンボルの生成(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 回目のコンパイルを行うとクラッシュが発生します。

于 2013-06-09T12:39:36.830 に答える