Search
Duplicate

Remote Development

SFTP

SFTP로 소스만 가져와 디버깅하는 방법이다.
리눅스의 코드를 가져오는 것이라면 WSL(리눅스용 윈도우 하위 시스템) 을 설치하여 vscode 터미널을 WSL 쉘로 바꾸는 것을 추천한다.
로컬의 vscode에서 SFTP 확장 프로그램을 설치한다.
명령팔레트를 열어 아래 명령어를 입력한다
>SFTP: Config
Plain Text
프로젝트 디렉토리에 .vscode 폴더가 생성되며 해당 디렉토리 안에 sftp.json이 생성된다.
sftp.json은 해당 형식으로 작성한다.
{ "name": "AIWAF_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
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을 작성해 헤더 경로를 추가해준다.
{ "configurations": [ { "name": "Linux", "includePath": [ # 헤더 include 경로 설정 "/mnt/d/CLANG/AIWAF_source/AIKM10/v1.0.0/**", "/mnt/d/CLANG/AIWAF_source/AILIB40/v4.0.0/**", "/mnt/d/CLANG/AIWAF_source/AISSL10/v1.0.0/**", "/mnt/d/CLANG/AIWAF_source/AIWAF50/v5.0/**", "/mnt/d/usr/include" ], "cStandard": "c11", # C 표준 설정 "cppStandard": "c++17", # CPP 표준 설정 "intelliSenseMode": "gcc-x64" # intellisense(자동완성)모드 설정 } ], "version": 4 }
JSON

C/C++ DEBUG

디버깅을 하기 위해 위 (1.2 SSH로 연결 - 디버깅 설정) 에서 서술한 것처럼 launch.json 파일을 생성한다.이후 launch.json에서 다음과 같은 형식으로 작성한다.
{ // 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": "/monitorapp/aiswg/bin/sagw", # 해당 프로세스의 프로그램 경로 "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, } } ] }
JSON