인터넷이 차단된 에어갭(Air-gapped) 환경에서 윈도우의 VS Code를 사용하여 리눅스 서버의 C/C++ 프로젝트를 원격 디버깅하기 위한 템플릿입니다.
이 프로젝트의 핵심은 "지능(UI)은 윈도우에, 실행(Runtime)은 리눅스에" 두는 것입니다. 서버에 무거운 에이전트를 설치할 수 없는 환경을 위해 설계되었습니다.
- VS Code 본체: 오직 윈도우에만 설치됩니다.
- 확장 프로그램:
C/C++ Extension등 모든 도구는 윈도우 VS Code 내에 설치됩니다. - SSH 클라이언트: 리눅스 서버와 통신하기 위한
ssh.exe가 위치합니다. - 역할: 코드 편집, 디버깅 컨트롤(F5, F10 등), 변수 모니터링 UI 제공.
- VS Code 미설치: 서버에는 VS Code나
vscode-server에이전트를 설치할 필요가 없으며 설치하지 않습니다. - 표준 GDB: 리눅스 기본 패키지인
gdb만 사용합니다. - 역할: 실제 코드의 빌드(Compile) 및 프로세스 실행, GDB를 통한 디버그 정보 송신.
디버깅 시 소스 코드 라인을 정확히 매핑하기 위해 윈도우와 리눅스 양쪽에 동일한 구조의 소스 코드가 존재해야 합니다.
- 윈도우 소스: VS Code가 화면에 코드를 보여주고 브레이크포인트를 설정하는 용도입니다.
- 리눅스 소스: 실제 서버에서 컴파일되어 바이너리(a.out)를 생성하는 용도입니다.
- 동기화: WinSCP 등을 이용해 윈도우에서 수정한 내용을 리눅스로 실시간 전송(Push)해야 합니다.
<Project Root>/ # (Windows: C:\Work\Project, Linux: /home/user/dev)
├── .vscode/
│ └── launch.json # 윈도우 VS Code용 설정 (서버 접속 정보 포함)
├── apps/
│ └── main_app/ # [소스 코드]
│ ├── src/main.c # (Windows & Linux 양쪽 동일 위치 필수)
│ └── Makefile
├── libs/ # [공유 라이브러리 소스 코드]
│ ├── lib_b/
│ └── lib_d/
├── Makefile # 전체 통합 빌드용
└── build/ # [결과물] 리눅스 빌드 시 생성되는 .so 및 a.out
- 윈도우: VS Code와 C/C++ 확장을 설치합니다.
- 리눅스:
gdb,gcc,make가 설치되어 있는지 확인합니다. (VS Code 설치 금지) - 동기화: 윈도우의 소스 폴더를 리눅스의 작업 디렉토리로 SFTP 복사합니다.
- 빌드: 리눅스 터미널에서
make를 실행합니다. - 연결: 윈도우 VS Code의
launch.json에서 서버 IP와 경로를 수정 후F5를 누릅니다.
일반적인 VS Code Remote 방식은 서버에 vscode-server를 자동으로 다운로드하려고 시도하지만, 에어갭 환경에서는 외부망(인터넷) 접속이 차단되어 이 과정이 실패합니다. 따라서 본 템플릿은 서버에 아무것도 설치하지 않는 Zero-Agent 방식을 채택하여 보안 정책을 준수하면서도 강력한 디버깅 기능을 제공합니다.