Help us understand the problem. What is going on with this article?

VS CodeでFortranをデバッグ設定までやってみる。【Win10】

初めに

FortranをWindowsでビルド・デバッグする場合は、どういうツールを組み合わせればいいのか調べた。
デバッグでブレークポイントに止まらない問題でやや詰まったが解決。
必要最小限の構成で考えている。

使用するツールや環境

・Windows 10
・Visual Studio Code
 ※エクステンションは2つ:Modern Fortran、C/C++
・gfortran(フリーのコンパイラ)

1.Fortranコンパイラの準備

TDM-GCCから、「tdm64-gcc-***.exe」をダウンロード
 ※gccだけど、gfortranも入っている。
・インストールする。fortranのチェックを忘れずに。
 image.png
・インストールされたか確認。以下2つのファイルが重要。
 image.png

2.VS Codeの準備

※VS Codeインストールは割愛。
・画面一番左の「拡張機能」から「Modern Fortran」を検索してインストール。
 ※自動的に「C/C++」もインストールされる。
・インストールされた「Modern Fortran」を右クリック→拡張機能の設定
・gfortranの場所を指定
 image.png
・実行→構成を開く→C++(GDB/LLDB)
 ※Fortranだけど、C++を選ぶ。というか、そもそもFortranがない。
 下のように、"program"と"miDebuggerPath"を自分の環境に合わせて設定。他はそのままでいいかな。

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 起動",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/a.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:/TDM-GCC-64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "gdb の再フォーマットを有効にする",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

3.Fortranのビルド

・ビルド作業はVS Code上ではなく、コマンドプロンプトで実行。
・今回はデバッグをするためには、必ずオプション 「-g」を付ける。

C:\Temp>gfortran -g fortran_program.f90

・exeファイルが作成される。
image.png

4.VS Codeによるデバッグ

・VS Codeでフォートランファイルを開き、行数の左にデバッグポイントを打つ
image.png
・実行→デバッグの実行。
 すると、ちゃんとデバッグポイントで止まる!
image.png

終わり

ビルド時にオプション必要というのがやや詰まりましたが、できて良かった。
学生時代はprint文によるデバッグしかできなかったから、Fortranでもデバッグできるんだなぁと感慨深いです。
宜しければお使いください。

「gfortran -g」がVS Codeから実行できるかどうかは、わからないです。どうやるんだろ、多分簡単だろうけどここまでにしておきます。

emushi5
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away