vscode sftp develop
목차
Remote Development (SFTP)
SFTP
SFTP로 소스만 가져와 디버깅하는 방법이다.
리눅스의 코드를 가져오는 것이라면 WSL(리눅스용 윈도우 하위 시스템) 을 설치하여 vscode 터미널을 WSL 쉘로 바꾸는 것을 추천한다.
로컬의 vscode에서 SFTP 확장 프로그램을 설치한다.
명령팔레트를 열어 아래 명령어를 입력한다
1
>SFTP: Config
프로젝트 디렉토리에 .vscode 폴더가 생성되며 해당 디렉토리 안에 sftp.json이 생성된다.
sftp.json은 해당 형식으로 작성한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"name": "TEST SFTP", # 설정 별명
"host": "xxx.xxx.xxx.xxx", # SFTP 아이피
"protocol": "sftp", # SFTP 프로토콜 이용
"port": 22, # SFTP 서비스 포트
"username": "tester", # 계정명
"password": "1234qwer", # 비밀번호
"remotePath": "/home/src", # SFTP로 가져올 폴더의 최상위 경로
"autoUpload": false, # 자동 업로드 (해제 추천)
"autoDelete": false, # 자동 삭제 (해제 추천)
"uploadOnSave": true, # 세이브(ctrl+s)할때마다 sftp자동 업데이트
"syncMode": "full", # 동기화 모드
"ignore": [ # SFTP 파일 다운로드, 업로드 시 무시하는 파일 또는 폴더 경로
"**/tags",
"**/.svn",
"**/.git",
"**/.vscode"
]
}
json 오류없이 제대로 설정하면 파일 탐색기에서 우클릭을 하였을 때 SFTP 관련 메뉴가 뜨게 된다.
소스와 리눅스용 헤더파일들도 가져오는것을 추천한다. (/usr/include, /usr/local /usr/lib ..)헤더가 없으면 C/C++을 설치하였을 때 제대로 Intellisense(코드 자동완성, 에러체크)가 제대로 작동하지 않을 수 있다.
C/C++ Intellisense
이후 디버깅과 intellisense 자동완성을 위해 C/C++ , Native Debug 확장 프로그램을 설치한다.
Intellisense를 설정하기 위해 .vscode 디렉토리에 c_cpp_properties.json 파일을 만든 뒤 json을 작성해 헤더 경로를 추가해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"configurations": [
{
"name": "Linux",
"includePath": [ # 헤더 include 경로 설정
"/mnt/d/path/to/proj1/**",
"/mnt/d/path/to/proj2/**",
"/mnt/d/path/to/proj3/**",
"/mnt/d/usr/include"
],
"cStandard": "c11", # C 표준 설정
"cppStandard": "c++17", # CPP 표준 설정
"intelliSenseMode": "gcc-x64" # intellisense(자동완성)모드 설정
}
],
"version": 4
}
C/C++ DEBUG
디버깅을 하기 위해 위 (1.2 SSH로 연결 - 디버깅 설정) 에서 서술한 것처럼 launch.json 파일을 생성한다.이후 launch.json에서 다음과 같은 형식으로 작성한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name" :"Launch to SSH", # 해당 설정 별명
"type": "gdb", # gdb 디버거 사용
"request": "launch", # launch 옵션
"target": "./test.out", # 디버깅할 프로그램 경로
"cwd": "${workspaceRoot}", # 프로그램의 소스 경로
"ssh": { # ssh 정보
"forwardX11": true,
"host": "xx.xx.xx.xx", # ssh 접속 ip
"port": 22, # ssh 포트
"cwd": "/home/src", # ssh의 프로그램 소스 경로
"user": "test", # 유저명
"password": "1234asdf", # 비밀번호
"x11host": "localhost",
"x11port": 6000
}
},
{
"name" :"Attach to SSH", # 해당 설정 별명
"type": "gdb", # gdb 디버거 사용
"request": "attach", # attach(프로세스 디버깅)
"executable": "/program/path", # 해당 프로세스의 프로그램 경로
"target": "2669", # 프로세스 pid
"cwd": "${workspaceRoot}", # 프로세스/프로그램의 소스 경로
"ssh": { # ssh 정보
"forwardX11": true,
"host": "xx.xx.xx.xx", # ssh 접속 ip
"port": 22, # ssh 접속 포트
"cwd": "/home/src/", # ssh의 프로세스/프로그램 소스 경로
"user": "test", # 유저명
"password": "1234qwer", # 비밀번호
"x11host": "localhost",
"x11port": 6000,
}
}
]
}
This post is licensed under CC BY 4.0 by the author.