Linux 서버 VSCode는 Fortran 디버깅 환경을 구성합니다.

Linux 서버 VSCode는 Fortran 디버깅 환경을 구성합니다.

VS Code를 사용하여 Fortran 프로그램을 작성할 때 디버깅 기능을 잘 활용하지 못하여 인쇄된 결과를 다양한 곳에 활용하고 있습니다 print. 업무 효율성을 높이기 위해 포트란 디버깅 환경을 구성하는 방법을 연구하고 이에 대한 블로그를 많이 읽고 여기에 메모와 요약을 작성했습니다.

참고: 이 블로그는 원래 Fortran 디버깅 환경을 구성하기 위해 M1 칩 Mac용으로 작성되었지만 M1 칩에서는 이를 지원하지 않으며 gdb디버깅 lldb도구로서 중간 변수의 값을 정상적으로 볼 수 없으므로 M1 칩의 경우 Mac에서는 현재 VSCode를 사용하여 Fortran 디버깅 환경을 정상적으로 구축하는 것이 불가능합니다.

1. 포트란 환경

이 글에서 사용된 컴파일러는 Intel기본적으로 제공 되며, 컴파일러 외부 에서도 사용 가능합니다 .ifortgccgfortran

2. VS 코드 플러그인

VS Code 공식 홈페이지 에 접속하여 다운로드 및 설치를 하신 후 VS Code를 실행하신 후 좌측의 확장기능을 클릭하신 후 플러그인을 설치해 주세요.

이름 작가 사용 설치 위치
원격 - SSH 마이크로소프트 여기에 이미지 설명을 삽입하세요 원격으로 SSH 서버에 연결 현지의
C/C++ 마이크로소프트 여기에 이미지 설명을 삽입하세요 최신 Fortran 플러그인 종속성 섬기는 사람
현대 포트란 포트란 프로그래밍 언어 여기에 이미지 설명을 삽입하세요 포트란 구문 지원, 강조 표시, 디버깅 등 섬기는 사람
  • 서버를 사용하지 않는 경우 마지막 두 플러그인을 로컬에 설치하세요.
  • 여기서는 꼭 설치해야 하는 플러그인들만 소개하고 Code Runner, Makefile Tools등 기타 보조 플러그인들은 직접 찾아보고 사용해 볼 수 있다.

3. SSH 서버 연결

서버를 사용하지 않는 경우 이 섹션을 건너뛰세요.

  • Remote - SSH플러그인을 설치 하면 왼쪽 탐색 표시줄에 원격 리소스 관리자가 나타납니다.
  • 원격 리소스 관리자를 연 후 "+" 기호를 클릭하여 서버를 추가합니다.
  • 서버를 추가할 때 SSH일반적으로 명령을 입력하면 됩니다. 예를 들어 SSH -P 1233 [email protected]-P의 포트 번호는 지정하지 않아도 됩니다.

4. 디버그 파일 구성

예를 들어 폴더를 열고 TEST_FORTRAN이 폴더 아래에 .vscode폴더를 만들고 .vscode폴더 에 두 개의 파일을 생성 launch.json하고 생성합니다. 두 파일의 구성은 다음과 같습니다.tasks.json

4.1 발사.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: 디버깅 및 실행 전에 실행되는 명령, 명령 레이블은 buildtask.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}: 단일 파일을 컴파일하고, 여러 파일을 컴파일할 경우 다음과 같이 수정합니다.*.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것을 왼쪽에서 볼 수 있습니다. 아래 그림과 같이 프로그램에 할당된 합계 변수는 여전히 초기 값입니다 .ab12c0

여기에 이미지 설명을 삽입하세요

5.2 다중 파일 디버깅

  • New 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.f90.test_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