Linux 서버 VSCode는 Fortran 디버깅 환경을 구성합니다.
VS Code를 사용하여 Fortran 프로그램을 작성할 때 디버깅 기능을 잘 활용하지 못하여 인쇄된 결과를 다양한 곳에 활용하고 있습니다 print
. 업무 효율성을 높이기 위해 포트란 디버깅 환경을 구성하는 방법을 연구하고 이에 대한 블로그를 많이 읽고 여기에 메모와 요약을 작성했습니다.
참고: 이 블로그는 원래 Fortran 디버깅 환경을 구성하기 위해 M1 칩 Mac용으로 작성되었지만 M1 칩에서는 이를 지원하지 않으며
gdb
디버깅lldb
도구로서 중간 변수의 값을 정상적으로 볼 수 없으므로 M1 칩의 경우 Mac에서는 현재 VSCode를 사용하여 Fortran 디버깅 환경을 정상적으로 구축하는 것이 불가능합니다.
1. 포트란 환경
이 글에서 사용된 컴파일러는 Intel
기본적으로 제공 되며, 컴파일러 외부 에서도 사용 가능합니다 .ifort
gcc
gfortran
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
: 디버깅 및 실행 전에 실행되는 명령, 명령 레이블은build
task.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
것을 왼쪽에서 볼 수 있습니다. 아래 그림과 같이 프로그램에 할당된 합계 와 변수는 여전히 초기 값입니다 .a
b
1
2
c
0
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
일반적으로 컴파일해야 하는 파일과 일치할 수 있는 한 다른 쓰기 방법도 사용할 수 있습니다.
- 디버그 버튼을 클릭하면 실행 결과는 다음과 같습니다.