Linux サーバー VSCode が Fortran デバッグ環境を構成する

Linux サーバー VSCode が Fortran デバッグ環境を構成する

VS Code を使って Fortran プログラムを書く場合、デバッグ機能が苦手で、いろいろなところで出力結果を使っていますprint作業効率を上げるために、Fortran のデバッグ環境の構築方法を勉強し、そのためのブログをたくさん読み、メモと要約をここに作成しました。

注: このブログは元々 M1 チップ Mac で Fortran デバッグ環境を構築するために書かれたものですが、M1 チップはそれをサポートしておらず、gdbデバッグlldbツールとしては中間変数の値を正常に表示できないため、M1 チップではMac では、現時点では VSCode を使用して Fortran デバッグ環境を通常に構築することはできません。

1.Fortran環境

この記事で使用されているコンパイラはIntelすぐに使用できるものであり、コンパイラの外でも実行可能です。ifortgccgfortran

2.VSコードプラグイン

VS Code の公式 Web サイトにアクセスしてダウンロードしてインストールし、完了したら VS Code を開き、左側の拡張機能をクリックしてプラグインをインストールします。

名前 著者 アイコン 使用 設置場所
リモート - SSH マイクロソフト ここに画像の説明を挿入 SSHサーバーにリモート接続する 地元
C/C++ マイクロソフト ここに画像の説明を挿入 最新の Fortran プラグインの依存関係 サーバ
モダンフォートラン Fortran プログラミング言語 ここに画像の説明を挿入 Fortran 構文のサポート、ハイライト表示、デバッグなど。 サーバ
  • サーバーを使用しない場合は、最後の 2 つのプラグインをローカルにインストールするだけです。
  • ここではインストールが必要なプラグインのみを紹介します。その他の補助的なプラグイン ( など) についてはCode RunnerMakefile Tools自分で調べて使用することができます。

3. SSHサーバー接続

サーバーを使用していない場合は、このセクションをスキップしてください。

  • Remote - SSHプラグインをインストールすると、左側のナビゲーション バーにリモート リソース マネージャーが表示されます。
  • リモート リソース マネージャーを開いた後、「+」記号をクリックしてサーバーを追加します
  • サーバーを追加するときは、SSH通常どおりコマンドを入力します。たとえばSSH -P 1233 [email protected]-Pの後のポート番号は指定しなくてもかまいません。

4. デバッグファイルを設定する

たとえば、フォルダーを開き、TEST_FORTRANこのフォルダーの下に.vscodeフォルダーを作成し、.vscodeそのフォルダー内に2 つのファイルを作成launch.jsonします。2 つのファイルの構成は次のとおりです。tasks.json

4.1 launch.json

ほとんどの場合、このドキュメントでは次の構成を使用できます。

{
    
    
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
    
    
            "type": "cppdbg",
            "request": "launch",
            "name": "Debug",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}",
            "args": [],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "build"
        }
    ]
}

type: デバッグコンパイラを指定します。
name: 左側の実行およびデバッグウィンドウに表示される構成名
program: Fortran によって生成された実行可能ファイルの絶対パス
preLaunchTask: デバッグおよび実行前に実行されるコマンド。コマンドラベルは、buildtasks.json ファイルに設定されます。

4.2 タスク.json

これは、デバッグ前に実行されるコマンドと、デバッグ ウィンドウの一部のパラメーターを構成するために使用されます。ここで使用する構成は次のとおりです

{
    
    
    "version": "2.0.0",
    "tasks": [
        {
    
    
            "label": "build",
            "type": "shell",
            "command": "ifort",
            "args": [
                "-g",
                "${fileDirname}/${fileBasename}",
                "-o",
                "${workspaceFolder}/${fileBasenameNoExtension}"
            ]
        }
    ]
}

label: launch.json にpreLaunchTask設定されたラベルに対応
type:ここで使用されるshell
command: ターミナル呼び出し時に実行されるコマンド
args:実行command時に渡されるパラメータ

  • -g: デバッグを有効にする
  • ${fileDirname}/${fileBasename}: 単一の for ファイルをコンパイルします。複数の for ファイルをコンパイルする場合は、次のように変更します。*.f*
  • -o: 出力実行ファイル
  • ${workspaceFolder}/${fileBasenameNoExtension}: 実行可能ファイルの名前を出力します。${fileBasenameNoExtension}サフィックスを除いたデバッグされたファイルの名前を示します。(注: ここでの実行可能ファイルの名前は、launch.json ファイルにprogram設定されたパラメータと一致する必要があります)

5. テスト

5.1 単一ファイルのデバッグ

  • Test_Fortranフォルダーの下に新しいファイルを作成しtest01.f90、次の内容を書き込みます
program name
    implicit none
    real a,b,c

    a = 1.0
    b = 2.0
    c = 3.0

    print *,a,b,c
end program name
  • 左側のナビゲーション バーで[実行とデバッグ]をクリックし、新しく確立されたデバッグ環境を選択し次のように 5 行目と 9 行目にブレークポイントを追加します。

ここに画像の説明を挿入

  • [デバッグ]をクリックしてデバッグし、図の赤いボックス内のボタンをクリックして段階的にデバッグします (またはショートカット キーを使用します)。7 行目まで実行すると、左側で変数sumの値が次のように更新されていることF10がわかります。以下の図に示すように、プログラムで合計が割り当てられ変数はInitial value のままです。ab12c0

ここに画像の説明を挿入

5.2 複数ファイルのデバッグ

  • 新しい場合はtest02.f90、次のようにサブルーチンを作成します。
subroutine test_add(a, b, c)
    real, intent(in) :: a,b
    real, intent(out) ::  c

    c = a + b
    
    return
end subroutine test_add
  • 次のように を変更して呼び出しtest01.f90ますtest02.f90test_add
program name
    implicit none
    real a,b,c

    a = 1.0
    b = 2.0
    
    call test_add(a,b,c)

    print *,a,b,c
end program name
  • tasks.json複数のファイルの同時コンパイルをサポートするようにファイルを変更します。変更は次のようになります。
{
    
    
    "version": "2.0.0",
    "tasks": [
        {
    
    
            "label": "build",
            "type": "shell",
            "command": "ifort",
            "args": [
                "-g",
                "${fileDirname}/*.f*",
                "-o",
                "${workspaceFolder}/${fileBasenameNoExtension}"
            ]
        }
    ]
}

*.f*これは接尾辞.f90とを持つファイルを照合するために使用されます.for。コンパイルする必要があるファイルと通常照合できる限り、他の記述方法も使用できます。

  • 「デバッグ」ボタンをクリックすると、実行結果は次のようになります。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_36529483/article/details/125607807