Skip to content

JayTwoLab/vscode-airgapped-cpp-debug

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 vscode-airgapped-cpp-debug

인터넷이 차단된 에어갭(Air-gapped) 환경에서 윈도우의 VS Code를 사용하여 리눅스 서버의 C/C++ 프로젝트를 원격 디버깅하기 위한 템플릿입니다.

🏗️ 설치 및 작동 구조 (Installation & Architecture)

이 프로젝트의 핵심은 "지능(UI)은 윈도우에, 실행(Runtime)은 리눅스에" 두는 것입니다. 서버에 무거운 에이전트를 설치할 수 없는 환경을 위해 설계되었습니다.

1. 윈도우 로컬 (Local PC) - VS Code 설치 위치

  • VS Code 본체: 오직 윈도우에만 설치됩니다.
  • 확장 프로그램: C/C++ Extension 등 모든 도구는 윈도우 VS Code 내에 설치됩니다.
  • SSH 클라이언트: 리눅스 서버와 통신하기 위한 ssh.exe가 위치합니다.
  • 역할: 코드 편집, 디버깅 컨트롤(F5, F10 등), 변수 모니터링 UI 제공.

2. 리눅스 서버 (Remote Server) - VS Code 미설치

  • VS Code 미설치: 서버에는 VS Code나 vscode-server 에이전트를 설치할 필요가 없으며 설치하지 않습니다.
  • 표준 GDB: 리눅스 기본 패키지인 gdb만 사용합니다.
  • 역할: 실제 코드의 빌드(Compile) 및 프로세스 실행, GDB를 통한 디버그 정보 송신.

📂 소스 코드 위치 및 관리 (Source Code Location)

디버깅 시 소스 코드 라인을 정확히 매핑하기 위해 윈도우와 리눅스 양쪽에 동일한 구조의 소스 코드가 존재해야 합니다.

  • 윈도우 소스: 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

🚀 빠른 시작 가이드 (Quick Start)

  1. 윈도우: VS Code와 C/C++ 확장을 설치합니다.
  2. 리눅스: gdb, gcc, make가 설치되어 있는지 확인합니다. (VS Code 설치 금지)
  3. 동기화: 윈도우의 소스 폴더를 리눅스의 작업 디렉토리로 SFTP 복사합니다.
  4. 빌드: 리눅스 터미널에서 make를 실행합니다.
  5. 연결: 윈도우 VS Code의 launch.json에서 서버 IP와 경로를 수정 후 F5를 누릅니다.

💡 왜 서버에 VS Code를 설치하지 않나요?

일반적인 VS Code Remote 방식은 서버에 vscode-server를 자동으로 다운로드하려고 시도하지만, 에어갭 환경에서는 외부망(인터넷) 접속이 차단되어 이 과정이 실패합니다. 따라서 본 템플릿은 서버에 아무것도 설치하지 않는 Zero-Agent 방식을 채택하여 보안 정책을 준수하면서도 강력한 디버깅 기능을 제공합니다.

About

C++ Air-gapped vscode Linux 환경

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors