デバッガーで実行時エラーの場所を特定する方法

多くのエラー形式では,デバッガーを使ってエラーの原因を特定することができます。この節では,以下のトピックについて説明しています。

コンパイラ・オプションの効果

デバッガーが適切なエラー状態を特定できるようなコンパイラ・オプションを使ってプログラムのコンパイルを行わなければならないことに注意してください。

多くの場合,プログラムは例外が発生した点で自動的に停止し,ソース・コードと変数値を表示することができるようになります。エラーが I/O 文に関連している場合は,「Call Stack の表示と Context メニューの使用」を参照してください。

例外のデバッグ

例外の特定の型が発生した時,常にプログラムを停止するように要求することができます。特定の例外は,基本設定として Visual Fortran 実行時ライブラリーで捕えられ,実行時ライブラリー・コード中でプログラムが停止します。多くの場合,自分のプログラムのソース・コード中でプログラムを停止させたいはずです。

デバッガーで例外の処理方法を変える方法

  1. デバッガーを起動し,初期ブレークポイントで実行を停止します。

  2. 「Debug」メニューで「Exceptions」をクリックします。

  3. 表示された例外を読みます。

  4. 変更したい例外の型を選択し,それを「Stop if not handled」から「Stop Always」に変更します。

  5. 「Debug」メニューで「Go」をクリックし,プログラムの実行を続行します。

  6. 例外が発生すると,実行されたソース行を読み,現在の変数値を検証し,次の命令を実行するなどの動作を行って,プログラムのその部分をよりよく検証することができるようになります。エラーが I/O 文に関連している場合は,「Call Stack の表示と Context メニューの使用」を参照してください。

  7. エラーの場所を特定し,プログラムを修正した後,プログラムを再度デバッグする前に,例外の型を「Stop if not handled」にリセットするかどうかを考慮する必要があります。

以下の項目の両方が設定されていれば,機械語例外に対して,それらはビジュアル開発環境外で実行されているので,プログラムのデバッグに Just-In-Time デバッグ機能を使用することができます。

Call Stack の表示と Context メニューの使用

プログラムのルーチンの階層構造のどこが現在実行されているのかを表示するには,例外が発生した点でプログラムを停止した後,デバッガーで「Call Stack」ウィンドウと「Context」メニューを表示します。

  1. デバッガーを起動し,ブレークポイントで停止させます。

  2. 「View」メニューの「Debug Windows」をクリックします。

  3. サブメニューで「Call Stack」をクリックします。

プログラムをデバッガー中で実行しているときに,重大な処理できない I/O プログラミング・エラー (ファイル終了条件など) が発生することがあります。この場合,Fortran 実行システムはデバッグ・イベントを提起して,プログラムの実行を自動的に停止するので,「Call Stack」を表示させることができます。

デバッガー中で,重大な処理できない I/O エラーが発生すると,次の処理が行われます。

「OK」をクリックすると,情報ボックスが消えます。

「Call Stack」の内容を検証すると,NTDLL と Fortran 実行システムの数画面の後に,エラーを引き起こした I/O 文を含んでいる実際の Fortran ルーチンが表示されているはずです。「Context」メニューの「Fortran routine」を選択して,Fortran コードを表示させます。緑色の矢印が,エラーを引き起こした I/O 文を指しています。

「Context」メニュー (「Context:」の後) を使うと,I/O 文を実行したソース・コード行の場所を特定することができます。「Context」メニューは,「Variables」ウィンドウの上部に表示されます (「Squares サンプル・プログラムのデバッグ」を参照)。「Context」メニューを使って,ルーチンを表示するためのコンテキストを選択してください (右側の矢印を使うと選択項目が表示されます)。

この動作は,いずれもエラー・メッセージとトレースバック情報が表示された後に起こります。エラー・メッセージとトレースバック情報はアウトプット・ペインに表示されます。アウトプット・ペインを表示するには,ビジュアル開発環境をアイコン化 (最小化) するか,タスクバーでアウトプット・ペインのアイコンをクリックします。ビジュアル開発環境には「Call Stack」ウィンドウがあるので,スタック・ダンプを行う必要はありませんが,ファイル名を含んだエラー・メッセージは役に立ちます。

関連情報