内部エラーを解決する(C++)

提供: Appmethod Topics
移動先: 案内検索

アプリケーションのデバッグ:インデックス への移動


内部コンパイラ エラー

C++ コンパイラから生成されるエラーのうち、内部コンパイラ エラー(ICE)と見なされるものは以下の 3 種類です:

これら 3 つのエラーはすべて、コンパイラのバグに起因します。 <ファイル名> と <行番号> は、エラーの発生前にコンパイラが解析していたソース コード箇所ですが、問題の発生源を示すかどうかはわかりません。 <エラー コード> は、エラーの発生時にコンパイラが何を行おうとしていたかをコンパイラ技術者に伝える固有の情報です。

内部コンパイラ エラーが発生した場合の対処

  1. ユーザー コードが間違っているとは限らないということを覚えておきます。
  2. クリーン ビルドを試みます。
  3. ソース コードを分析して問題を絞り込みます。
  4. バグ レポートを提出します。

クリーン ビルドの実行方法

  1. [プロジェクト マネージャ]でプロジェクトを右クリックし、[クリーンアップ]を選択します。
  2. ディレクトリ構造を調べて、プロジェクトに .obj、.tds、.dcu、.#*、.pch のどの種類のファイルも関連付けられていないことを確認します。
  3. プロジェクトのコンテキスト メニューから[ビルド]を選択します。


ソース コードの分析方法

クリーン ビルドで問題が解決しない場合は、ソース コードを分析して問題を絞り込むことができます。

  1. エラー メッセージで言及されているファイルをプリプロセッサで処理します。 それには、[プロジェクト マネージャ]で対象ファイルを右クリックして[プリプロセス]を選択します。これにより、コンパイルの外部依存関係のないファイルが生成され、それは非常に大きいファイルになる可能性があります。
  2. プリプロセッサで処理されたファイルを -P スイッチを付けてコンパイルします。 これで十分問題を再現できる場合は、すぐにステップ 4 に進んでかまいません。
  3. .i ファイルが正常にコンパイルされた場合は、問題を再現するのにスイッチを追加する必要があるかもしれません。問題を再現するのにどのスイッチが必要か決定するまで、元のコマンド ライン ビルドに使用したあらゆるスイッチを追加しながら .i ファイルを再コンパイルします。
  4. これで、バグ レポートを提出するのに足る情報になります。 これ以上問題を絞り込まない場合は、バグ レポートの提出方法を確認してください。
  5. エラーが発生した行以降とコメントをすべて削除できます。
  6. 問題と関係がない可能性のある関数本体やその他のコード部分をコメントにしていきます。
  7. 問題の再生に必要ない部分が決まるにつれて、その部分を .i ファイルから削除してかまいません。
  8. 問題の再生に必要なコード要素をいったん絞り込んだら、バグ レポートを提出すると共に、回避策を試して見つけるための構文要素の種類を分析できます。

バグ レポートの提出方法

  1. IDE の[ツール]メニューから[Quality Central]を選択します。
  2. [+]([Insert])ボタンをクリックして、レポートを新規作成します。
  3. プロジェクト([Project])として[Appmethod C++]を選択します。
  4. 分野([Area])として[Compiler|C++]を選択します。
  5. エラーの再現に必要なコマンド ラインをバグの[Steps]タブに入力します。
  6. .i ファイルを添付します。
  7. チェック マーク([Post])ボタンをクリックして、レポートを保存します。

関連項目