Post

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 관련 메뉴가 뜨게 된다.

image

소스와 리눅스용 헤더파일들도 가져오는것을 추천한다. (/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.