はじめに
この記事の目的・内容
これは、初めてプログラミングに触れる人が河川シミュレーションソフトウェア「iRIC_v4」のNays2DH(ソースコードはこちら)を自らの手で改良し、実行可能にすることができるように基礎知識と手順を記すシリーズ記事の一部である。
前回記事で、Visual Studioの開発を行う際の基本操作であるプロジェクト作成、ビルドの方法について学んだ。今回はデバッグの方法について学ぶ。
前提
シリーズで一貫して、以下のような環境を想定する。
- 言語:Fortran
- IDE:Visual Studio 2022
- コンパイラ:Intel Fortran Compiler Classic (ifort), Intel(R) Fortran Compiler (ifx)
- OS: Windows
Fortranの開発環境は、こちらの記事の方法で構築している。
(再掲)Visual Studioでのプログラムの開発
大まかな流れ
Visual Studioを用いたプログラムの開発は、一般に下の図のような手順で行う。
- プロジェクト、ソリューションの作成:Visual Studioでソースコードを編集しビルドするためには、ソリューション・プロジェクトを作り、そこに編集したいソースコードを格納する必要がある。
- コーディング:Visual Studioのエディタを使って、プログラムのロジックを記述する。
- ビルド:ソースコードをコンパイルして実行可能なファイルを生成する。プロジェクトのプロパティを設定し、ビルドを実行する。
- テスト:生成された実行ファイルをテストし、期待通りに動作するか確認する。
- デバック:プログラムの不具合を修正する。Visual Studioのデバッガを使って、ステップ実行や変数の監視を行う。
- デプロイ:最終的な実行ファイルを動作させる環境に配置して利用できるようにし、配布する。
本記事では、「5.デバック」について扱う。「2.コーディング」、「4.テスト」については、今後の記事で触れる。「6.デプロイ」に関しては、今回のシリーズ記事は、iRIC Softwareという既存のアプリに対してその一部を改良することを目的としていることから扱わないものとする。
Visual Studioでのデバッグ
デバッグに関わるプロジェクトのプロパティを設定
-
デバッグをする際の実行ファイルのワーキングディレクトリの設定
左側のメニューから「構成プロパティ」→「Debugging」→「アクション」→「Working Directory」を選択し、実行ファイルのワーキングディレクトリを指定する。
-
デバッグをする際の環境変数の設定
「Debugging」→「アクション」→「Environment」を選択し、ここに「PATH="
パス
"」という形でパスを指定することで、デバッグにおけるプログラムの環境変数を指定することができる。これは、システム環境全体に適用されるものではなく、そのプロジェクトのデバッガのみに適用される。iRIC_v4のソルバーをIntelのコンパイラーでコンパイルする場合には、iRIC_v4のプログラムファイルのパス(
C:\Users\Username\iRIC_v4\guis\prepost
)と、Intelのコンパイラーへのパス(Windowsの場合はC:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin
)を通せばよい。環境変数
環境変数とは、OSやアプリが動作する際に使用する設定情報を格納するための変数である。PATH変数を用いて、プログラム内で参照されるファイルへのパスを入力しておけば、デバッグの際に、PATH変数に設定されたディレクトリが順番に検索され、最初に見つかった実行可能ファイルが実行される。また、PATH変数にディレクトリを追加することで、そのディレクトリ内のプログラムをフルパスを指定せずに実行できる。
Visual Studioに備えられたデバッグのための機能
ブレークポイントの設定
ブレークポイントを設定することで、プログラムの実行を一時停止し、特定の行でプログラムの状態を確認することができる。ブレークポイントを設定するには、コードエディタの左側の余白をクリックし、赤い丸が表示さればよい。
F5
キーを押すと、デバッガがプログラムを開始し、次のブレークポイントまで実行を続ける。
ステップ実行
ステップ実行を使用すると、プログラムを一行ずつ実行し、各ステップで変数の値やプログラムの状態を確認できる。ステップ実行には以下の3つの方法がある。
-
ステップイン:関数の内部に入って実行を続ける。ショートカットキーは
F11
。 -
ステップオーバー:関数の内部には入らずに次の行に進む。ショートカットキーは
F10
。 -
ステップアウト:現在の関数の実行を完了し、呼び出し元に戻る。ショートカットキーは
Shift + F11
。
変数の監視
変数の監視は、データヒント機能やウォッチウィンドウ機能を用いて行うことができる。
データヒント機能
データヒント機能を使うと、コードエディタ上で変数にマウスカーソルを合わせるだけで、その変数の現在の値をポップアップ表示で確認できる。デバッグ中に変数の値を迅速にチェックでき、特に複雑なデータ構造やオブジェクトの状態を把握するのに便利である。
データヒントを表示するには、デバッグ中に変数の上にマウスカーソルを移動させればよい。ポップアップには変数の値やオブジェクトのプロパティ、フィールドの値も表示される。
ウォッチウィンドウ機能
ウォッチウィンドウに変数を追加すると、その変数の現在の値が表示され、デバッグ中に変数の値を監視することができる。変数を追加するには、変数を右クリックし、「ウォッチに追加」を選択すればよい。