Visual Studio Code에서 C++ 리모트 디버깅하는 방법

Visual Studio Code의 Remote Development 기능은 원격 서버에서 코드를 편집하고 디버깅할 수 있도록 지원하는 강력한 도구입니다. 특히 C++ 개발자들은 성능이 중요한 프로젝트에서 로컬 환경이 아닌 고성능 서버에서 빌드 및 디버깅을 수행해야 하는 경우가 많습니다. 이러한 요구를 충족하기 위해 VS Code의 Remote – SSH 확장을 사용하면, 로컬 PC에서 원격 서버의 C++ 프로젝트를 손쉽게 디버깅할 수 있습니다.

본 기사에서는 VS Code에서 C++ 리모트 디버깅을 설정하는 방법을 단계별로 설명합니다. 원격 개발 환경을 설정하고, gdbserver를 활용하여 디버깅을 수행하는 방법을 소개하며, launch.json 설정을 통해 효율적으로 디버깅할 수 있는 환경을 구축하는 방법을 다룹니다. 또한, 실전 예제와 문제 해결 방법을 통해 리모트 디버깅 과정에서 발생할 수 있는 이슈를 효과적으로 해결하는 방법도 함께 살펴봅니다.

목차
  1. VS Code Remote Development 개요
    1. 주요 기능
    2. Remote Development 확장의 필요성
  2. C++ 리모트 디버깅의 필요성
    1. 로컬 디버깅 vs. 원격 디버깅
    2. C++ 리모트 디버깅이 필요한 이유
    3. 결론
  3. 원격 개발 환경 설정
    1. 1. VS Code에 Remote – SSH 확장 설치
    2. 2. SSH 설정 및 원격 서버 접속
    3. 3. VS Code에서 원격 서버 접속
    4. 다음 단계
  4. gdbserver를 이용한 원격 디버깅
    1. 1. gdbserver 설치 확인
    2. 2. 원격 서버에서 gdbserver 실행
    3. 3. 로컬 VS Code에서 GDB 연결
    4. 4. 디버깅 시작 및 중단
    5. 다음 단계
  5. launch.json 설정
    1. 1. launch.json 파일 생성 및 위치
    2. 2. launch.json 설정 예제
    3. 3. 설정 항목 설명
    4. 4. launch.json 설정 후 실행
    5. 5. 추가 설정: Attach 모드 사용
    6. 다음 단계
  6. 원격 빌드 및 실행
    1. 1. 원격 서버에서 C++ 프로젝트 빌드하기
    2. 2. VS Code에서 원격 빌드 자동화
    3. 3. 원격 실행 및 테스트
    4. 4. VS Code에서 원격 실행 자동화
    5. 다음 단계
  7. 원격 디버깅 문제 해결
    1. 1. SSH 연결 문제
    2. 2. gdbserver 실행 오류
    3. 3. 디버거 연결 실패
    4. 4. 디버깅 중 브레이크포인트가 작동하지 않음
    5. 5. gdbserver가 자동 종료됨
    6. 다음 단계
  8. 실전 예제: 리모트 C++ 프로젝트 디버깅
    1. 1. 프로젝트 예제 코드
    2. 2. 원격 서버에서 코드 컴파일 (디버그 빌드)
    3. 3. 원격 서버에서 gdbserver 실행
    4. 4. VS Code에서 원격 디버깅 설정
    5. 5. VS Code에서 원격 디버깅 시작
    6. 6. 디버깅 중 주요 기능 사용
    7. 7. 디버깅 종료 및 정리
    8. 결론
  9. 요약
    1. 📌 주요 내용 정리
    2. 🎯 결론

VS Code Remote Development 개요

Visual Studio Code Remote Development는 로컬 환경이 아닌 원격 서버에서 개발을 진행할 수 있도록 지원하는 기능입니다. 특히, Remote – SSH, Remote – Containers, Remote – WSL 등의 확장을 통해 다양한 환경에서 원격 개발이 가능합니다.

주요 기능

  1. 로컬 환경에서 원격 서버의 코드 편집 가능
  • SSH를 통해 원격 서버에 연결하여 파일을 직접 수정하고 저장할 수 있습니다.
  1. 원격 빌드 및 디버깅 지원
  • 로컬 환경이 아니라 원격 서버에서 직접 컴파일 및 실행이 가능합니다.
  1. 로컬과 동일한 개발 경험 제공
  • 원격 서버의 파일을 로컬 VS Code에서 다루는 것처럼 작업할 수 있습니다.
  1. 보안 및 네트워크 환경 지원
  • SSH 키를 활용하여 보안성이 유지된 상태에서 원격 작업이 가능합니다.

Remote Development 확장의 필요성

대규모 C++ 프로젝트는 빌드 시간이 길고, 강력한 하드웨어가 필요할 수 있습니다. 로컬 PC의 성능이 충분하지 않은 경우, 고성능 서버에서 빌드 및 디버깅을 수행하는 것이 효과적입니다. 이를 위해 VS Code의 Remote – SSH 확장을 활용하면 로컬 PC에서 원격 서버의 환경을 직접 제어하며 개발할 수 있는 장점이 있습니다.

이제 다음 단계에서 C++ 리모트 디버깅이 왜 필요한지 알아보겠습니다.

C++ 리모트 디버깅의 필요성

C++ 프로젝트의 규모가 커지고 성능이 중요한 경우, 리모트(원격) 디버깅이 필수적인 경우가 많습니다. 로컬 환경에서 실행하기 어려운 경우나 서버 환경에서의 테스트가 필요한 경우, 원격 디버깅을 활용하면 개발 효율성을 높일 수 있습니다.

로컬 디버깅 vs. 원격 디버깅

비교 항목로컬 디버깅원격 디버깅
실행 환경개발자의 로컬 PC원격 서버 (클러스터, 클라우드 등)
성능 제한로컬 PC의 성능에 의존고성능 서버 활용 가능
디버깅 방식로컬 GDB 또는 LLDB 사용gdbserver 등 원격 디버깅 툴 필요
네트워크 연결필요 없음SSH, 포트 포워딩 필요
용도소규모 프로젝트, 간단한 테스트대규모 프로젝트, 서버 기반 실행

C++ 리모트 디버깅이 필요한 이유

  1. 대규모 프로젝트의 빌드 및 실행 문제 해결
  • AI, 머신러닝, 게임 엔진, 고성능 컴퓨팅 프로젝트는 빌드 시간이 길고 실행 환경이 복잡합니다.
  • 원격 서버에서 직접 빌드 및 디버깅하면 로컬 PC의 리소스를 절약할 수 있습니다.
  1. 실제 운영 환경과 동일한 환경에서 디버깅 가능
  • 서버 애플리케이션, 클라우드 기반 소프트웨어는 로컬과 다른 환경에서 실행될 수 있습니다.
  • 원격 디버깅을 통해 환경 차이로 인한 버그를 효과적으로 잡을 수 있습니다.
  1. 크로스 플랫폼 개발 지원
  • 개발자는 Windows, Mac에서 코딩하면서도 Linux 서버에서 실행되는 프로그램을 디버깅할 수 있습니다.
  • 특히, 임베디드 시스템 개발 시에도 원격 디버깅이 필수적입니다.
  1. 보안 및 접근성 문제 해결
  • 원격 서버는 보안 정책상 직접 접속이 어렵거나, GUI 환경이 없는 경우가 많습니다.
  • VS Code의 Remote – SSH 기능을 활용하면 보안이 유지된 상태에서 디버깅이 가능합니다.

결론

C++ 리모트 디버깅은 개발 환경의 한계를 극복하고, 실제 운영 환경에서 코드의 동작을 검증할 수 있는 필수적인 방법입니다. 다음 단계에서는 VS Code를 이용한 원격 개발 환경 설정 방법을 살펴보겠습니다.

원격 개발 환경 설정

C++ 리모트 디버깅을 위해서는 VS Code의 Remote – SSH 확장을 이용하여 원격 서버에 연결해야 합니다. 이 과정에서는 SSH를 설정하고, VS Code에서 원격 서버에 접속하는 방법을 설명합니다.


1. VS Code에 Remote – SSH 확장 설치

VS Code에서 원격 서버에 접속하려면 Remote – SSH 확장을 설치해야 합니다.

  1. VS Code 실행
  2. Extensions(확장) 탭(Ctrl+Shift+X) 열기
  3. “Remote – SSH” 검색 후 설치

설치가 완료되면 VS Code에서 SSH를 이용한 원격 개발이 가능해집니다.


2. SSH 설정 및 원격 서버 접속

SSH를 이용해 원격 서버에 접속하려면, SSH 키를 설정하고 config 파일을 구성해야 합니다.

(1) SSH 키 생성 (선택 사항)

보안을 위해 SSH 키를 생성하여 원격 서버에 비밀번호 없이 접속할 수 있습니다.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

이후 생성된 공개 키(~/.ssh/id_rsa.pub)를 원격 서버의 ~/.ssh/authorized_keys에 추가합니다.

(2) SSH 설정 파일 편집 (config)

SSH 접속을 편리하게 하기 위해 ~/.ssh/config 파일을 설정합니다.

Host myserver
    HostName 192.168.1.100
    User myusername
    IdentityFile ~/.ssh/id_rsa
    Port 22

이제 터미널에서 ssh myserver 명령을 실행하면 간단하게 원격 서버에 접속할 수 있습니다.


3. VS Code에서 원격 서버 접속

이제 VS Code에서 원격 개발을 시작할 수 있습니다.

  1. VS Code 실행
  2. “Remote – SSH: Connect to Host” 선택 (Ctrl+Shift+P → 검색)
  3. myserver (SSH 설정한 호스트) 선택
  4. 원격 서버에 연결되면, 터미널과 파일 탐색기가 원격 환경을 기반으로 동작

이제 로컬에서 원격 서버의 파일을 편집하고, 빌드 및 실행을 수행할 수 있는 환경이 구축되었습니다.


다음 단계

이제 원격 서버에서 gdbserver를 이용한 원격 디버깅 방법을 살펴보겠습니다.

gdbserver를 이용한 원격 디버깅

C++ 프로그램을 원격 환경에서 디버깅하기 위해서는 gdbserver를 사용해야 합니다. gdbserver는 원격 디버거와 통신하며, 로컬에서 GDB를 실행하여 원격 프로세스를 디버깅할 수 있도록 합니다.


1. gdbserver 설치 확인

먼저 원격 서버에 gdbserver가 설치되어 있는지 확인해야 합니다.
터미널에서 다음 명령을 실행합니다.

gdbserver --version

설치되어 있지 않다면, 다음 명령을 사용하여 설치할 수 있습니다.

  • Ubuntu / Debian
  sudo apt install gdbserver
  • CentOS / RHEL
  sudo yum install gdb-gdbserver

2. 원격 서버에서 gdbserver 실행

디버깅할 프로그램을 빌드한 후, gdbserver를 실행해야 합니다.
예를 들어, my_program을 원격 디버깅하려면 다음 명령을 실행합니다.

gdbserver :1234 ./my_program

위 명령어는 포트 1234에서 gdbserver가 실행되며, 디버거 연결을 대기하는 상태가 됩니다.

📌 포트 선택 주의:

  • 방화벽 설정에서 해당 포트가 열려 있어야 합니다.
  • SSH 터널링을 사용하면 추가적인 포트 열기 없이 보안성을 유지할 수 있습니다.

3. 로컬 VS Code에서 GDB 연결

이제 VS Code에서 gdbserver에 연결해야 합니다.
launch.json 파일을 다음과 같이 설정합니다.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Remote Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "/path/to/my_program",  
            "miDebuggerServerAddress": "192.168.1.100:1234",
            "miDebuggerPath": "/usr/bin/gdb",
            "cwd": "/path/to/",
            "setupCommands": [
                { "text": "-enable-pretty-printing", "description": "Enable GDB pretty printing", "ignoreFailures": true }
            ]
        }
    ]
}

설정이 완료되면 VS Code에서 디버깅 시작 버튼(F5)을 누르면 원격 서버에서 실행 중인 gdbserver에 연결되어 디버깅을 진행할 수 있습니다.


4. 디버깅 시작 및 중단

  • 중단점 설정: VS Code에서 원격 실행 중인 코드에 브레이크포인트를 설정할 수 있습니다.
  • 디버깅 종료: 원격 서버에서 gdbserver를 종료하려면 Ctrl+C를 입력하면 됩니다.

다음 단계

이제 launch.json을 최적화하여 보다 효율적인 원격 디버깅 환경을 구축하는 방법을 살펴보겠습니다.

launch.json 설정

Visual Studio Code에서 원격 C++ 디버깅을 수행하려면, launch.json 파일을 올바르게 설정해야 합니다. 이 파일은 VS Code의 디버깅 환경을 정의하는 설정 파일로, 원격 gdbserver와 연결하여 원격 실행 중인 프로그램을 디버깅할 수 있도록 도와줍니다.


1. launch.json 파일 생성 및 위치

launch.json 파일은 .vscode/ 디렉터리 아래에 생성해야 합니다.

파일 생성 방법

  1. VS Code에서 Ctrl + Shift + P를 누른 후 "Debug: Open launch.json"을 검색하여 실행합니다.
  2. "C++ (GDB/LLDB)"을 선택하면 자동으로 launch.json이 생성됩니다.

2. launch.json 설정 예제

아래는 gdbserver를 이용한 원격 디버깅을 위한 launch.json 설정 예제입니다.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Remote Debugging",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/user/project/my_program",  
            "miDebuggerServerAddress": "192.168.1.100:1234",  
            "miDebuggerPath": "/usr/bin/gdb",  
            "cwd": "/home/user/project",  
            "externalConsole": false,
            "setupCommands": [
                {
                    "description": "Enable pretty printing",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "logging": {
                "engineLogging": true
            }
        }
    ]
}

3. 설정 항목 설명

설정 키설명
"name"디버깅 구성을 식별하는 이름
"type"사용할 디버거 유형 (cppdbg)
"request"디버깅 요청 유형 (launch 또는 attach)
"program"원격 서버에서 실행할 프로그램의 경로
"miDebuggerServerAddress"gdbserver가 실행 중인 원격 주소 및 포트
"miDebuggerPath"사용할 GDB 실행 파일 경로
"cwd"현재 작업 디렉터리 (소스코드 위치)
"externalConsole"외부 콘솔 사용 여부 (false 권장)
"setupCommands"디버깅을 위한 추가 GDB 명령어 (예: pretty-printing 활성화)
"logging"디버깅 로그 활성화

4. launch.json 설정 후 실행

  1. VS Code에서 디버그 탭 (Ctrl + Shift + D)로 이동
  2. 생성한 “Remote Debugging” 구성 선택
  3. 디버깅 시작 (F5)
  4. 원격 서버에서 실행 중인 gdbserver와 연결됨을 확인

5. 추가 설정: Attach 모드 사용

기존에 실행 중인 프로세스에 연결하려면 "request": "attach"로 변경해야 합니다.

{
    "name": "Attach to Remote Process",
    "type": "cppdbg",
    "request": "attach",
    "program": "/home/user/project/my_program",
    "processId": "12345",
    "miDebuggerServerAddress": "192.168.1.100:1234",
    "miDebuggerPath": "/usr/bin/gdb"
}

이 설정을 활용하면 원격 서버에서 실행 중인 프로세스에 연결하여 디버깅할 수 있습니다.


다음 단계

이제 원격 빌드 및 실행 방법을 살펴보겠습니다.

원격 빌드 및 실행

C++ 원격 디버깅을 원활하게 수행하려면, 원격 서버에서 직접 코드를 빌드하고 실행하는 환경을 구성해야 합니다. Visual Studio Code는 CMake, Makefile, SSH 터미널을 활용하여 원격에서 빌드 및 실행을 쉽게 할 수 있도록 지원합니다.


1. 원격 서버에서 C++ 프로젝트 빌드하기

원격 서버에서 빌드를 수행하려면, SSH를 통해 접속한 후 프로젝트에 맞는 빌드 도구를 사용하면 됩니다.

(1) Makefile을 이용한 빌드

Makefile이 있는 프로젝트에서는 SSH를 통해 원격 서버에 접속한 후 다음 명령을 실행합니다.

cd /home/user/project
make

빌드가 성공하면 실행 가능한 바이너리가 생성됩니다.

(2) CMake를 이용한 빌드

CMake 프로젝트라면 다음 단계를 따라 빌드할 수 있습니다.

cd /home/user/project
mkdir -p build && cd build
cmake ..
make -j$(nproc)  # 병렬 빌드

이렇게 하면 build/ 디렉터리에 실행 파일이 생성됩니다.


2. VS Code에서 원격 빌드 자동화

VS Code에서 CMake Tools 확장을 사용하면 원격 서버에서 빌드를 쉽게 자동화할 수 있습니다.

(1) CMake Presets 설정

원격 서버에서 CMake 빌드를 수행할 수 있도록 CMakePresets.json을 설정합니다.

{
    "version": 3,
    "configurePresets": [
        {
            "name": "remote-linux",
            "description": "Build for remote Linux server",
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/build",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug"
            }
        }
    ],
    "buildPresets": [
        {
            "name": "remote-linux-build",
            "configurePreset": "remote-linux",
            "jobs": 4
        }
    ]
}

이제 VS Code에서 CMake: Configure Project를 실행하면 원격 서버에서 자동으로 빌드가 진행됩니다.


3. 원격 실행 및 테스트

빌드된 바이너리를 실행하려면, SSH를 통해 접속한 후 직접 실행할 수 있습니다.

cd /home/user/project/build
./my_program

또는 VS Code의 터미널에서 Ctrl + Shift + P를 눌러 Remote-SSH: Open SSH Terminal을 선택한 후 위 명령어를 실행할 수도 있습니다.


4. VS Code에서 원격 실행 자동화

VS Code의 tasks.json을 활용하면 원격 서버에서 빌드 후 자동으로 실행하도록 설정할 수 있습니다.

(1) tasks.json 설정

.vscode/tasks.json을 아래와 같이 설정합니다.

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build on Remote",
            "type": "shell",
            "command": "ssh user@192.168.1.100 'cd /home/user/project && make'"
        },
        {
            "label": "Run on Remote",
            "type": "shell",
            "command": "ssh user@192.168.1.100 '/home/user/project/build/my_program'"
        }
    ]
}

이제 VS Code에서 Ctrl + Shift + B를 눌러 "Build on Remote" 작업을 실행하면 자동으로 빌드가 수행되며, "Run on Remote" 작업을 실행하면 원격 서버에서 실행할 수 있습니다.


다음 단계

이제 원격 디버깅 중 발생할 수 있는 문제와 해결 방법을 살펴보겠습니다.

원격 디버깅 문제 해결

Visual Studio Code에서 C++ 원격 디버깅을 수행하는 과정에서 SSH 연결 문제, gdbserver 실행 오류, 디버거 연결 실패 등의 문제가 발생할 수 있습니다. 이 섹션에서는 원격 디버깅 중 발생할 수 있는 주요 문제와 해결 방법을 정리합니다.


1. SSH 연결 문제

VS Code가 원격 서버에 연결되지 않는 경우, 먼저 SSH 설정을 점검해야 합니다.

(1) SSH 연결이 거부됨

✅ 해결 방법:

  • 원격 서버가 실행 중인지 확인
  ping 192.168.1.100
  • SSH 서비스가 활성화되어 있는지 확인
  systemctl status ssh

필요하면 다음 명령어로 SSH를 활성화합니다.

  sudo systemctl restart ssh
  • 방화벽에서 SSH(포트 22)가 열려 있는지 확인
  sudo ufw allow ssh

(2) SSH 키 인증 실패

✅ 해결 방법:

  • SSH 키가 올바르게 설정되어 있는지 확인
  ssh -i ~/.ssh/id_rsa user@192.168.1.100
  • SSH 키가 원격 서버의 ~/.ssh/authorized_keys에 추가되었는지 확인

2. gdbserver 실행 오류

gdbserver가 올바르게 실행되지 않는 경우, 다음을 확인해야 합니다.

(1) gdbserver가 설치되지 않음

✅ 해결 방법:

  • 원격 서버에서 gdbserver가 설치되어 있는지 확인
  gdbserver --version
  • 설치되어 있지 않다면 다음 명령어로 설치
  sudo apt install gdbserver  # Ubuntu/Debian
  sudo yum install gdb-gdbserver  # CentOS/RHEL

(2) gdbserver가 실행되지 않음

✅ 해결 방법:

  • gdbserver를 실행할 때 정확한 포트를 사용해야 합니다.
  gdbserver :1234 ./my_program
  • 포트가 사용 중이면 다른 포트로 변경
  gdbserver :5678 ./my_program

3. 디버거 연결 실패

VS Code에서 gdbserver와 연결할 수 없는 경우, 다음 사항을 확인해야 합니다.

(1) launch.json 설정 오류

✅ 해결 방법:

  • "miDebuggerServerAddress"가 올바른지 확인
  "miDebuggerServerAddress": "192.168.1.100:1234"
  • gdbserver의 실행 포트와 일치해야 함

(2) 방화벽 문제로 연결 차단

✅ 해결 방법:

  • 원격 서버에서 gdbserver가 사용하는 포트가 방화벽에 의해 차단되지 않았는지 확인
  sudo ufw allow 1234

(3) SSH 터널링 사용하여 보안 연결

✅ 해결 방법:

  • SSH 포트 포워딩을 사용하면 방화벽 문제 없이 안전하게 연결 가능
  ssh -L 1234:localhost:1234 user@192.168.1.100

이후 VS Code에서 localhost:1234로 연결하면 됨.


4. 디버깅 중 브레이크포인트가 작동하지 않음

✅ 해결 방법:

  • 디버깅 모드를 Release가 아닌 Debug로 설정
  cmake -DCMAKE_BUILD_TYPE=Debug ..
  make
  • GDB Pretty Printing 활성화 (launch.json에서 설정)
  "setupCommands": [
      { "text": "-enable-pretty-printing", "ignoreFailures": true }
  ]
  • 소스 코드 경로 매핑 확인
  • 로컬과 원격의 소스 경로가 다르면 디버거가 중단점을 찾지 못할 수 있음
  • "sourceFileMap"을 설정하여 올바른 경로 매핑
  "sourceFileMap": {
      "/home/user/project": "${workspaceFolder}"
  }

5. gdbserver가 자동 종료됨

✅ 해결 방법:

  • gdbserver가 실행 중인지 확인
  ps aux | grep gdbserver
  • gdbserver를 백그라운드에서 실행
  nohup gdbserver :1234 ./my_program &
  • 실행 파일이 종료되지 않도록 sleep을 추가하여 유지
  gdbserver :1234 ./my_program; sleep 10

다음 단계

이제 실전 예제를 통해 원격 C++ 프로젝트를 디버깅하는 과정을 살펴보겠습니다.

실전 예제: 리모트 C++ 프로젝트 디버깅

이제 앞서 설정한 환경을 활용하여 실제 C++ 프로젝트를 VS Code에서 원격 디버깅하는 방법을 실습해보겠습니다.


1. 프로젝트 예제 코드

먼저, 원격 서버에 샘플 C++ 프로젝트를 준비합니다.

📌 파일: main.cpp

#include <iostream>
#include <vector>

void processData(const std::vector<int>& data) {
    for (size_t i = 0; i < data.size(); ++i) {
        std::cout << "Processing data: " << data[i] << std::endl;
    }
}

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    processData(numbers);
    return 0;
}

이 코드는 벡터의 데이터를 출력하는 간단한 프로그램입니다.


2. 원격 서버에서 코드 컴파일 (디버그 빌드)

원격 서버에 SSH로 접속한 후 디버그 모드로 컴파일합니다.

g++ -g -o my_program main.cpp
  • -g 옵션을 추가하면 GDB에서 디버깅이 가능하도록 디버깅 심볼을 포함하여 컴파일됩니다.

3. 원격 서버에서 gdbserver 실행

다음으로, 원격 서버에서 gdbserver를 실행하여 디버깅을 위한 준비를 합니다.

gdbserver :1234 ./my_program

이 명령을 실행하면 gdbserver가 포트 1234에서 디버거 연결을 대기합니다.


4. VS Code에서 원격 디버깅 설정

이제 VS Code의 launch.json을 설정하여 원격 디버깅을 수행합니다.

📌 파일: .vscode/launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Remote Debugging",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/user/project/my_program",
            "miDebuggerServerAddress": "192.168.1.100:1234",
            "miDebuggerPath": "/usr/bin/gdb",
            "cwd": "/home/user/project",
            "externalConsole": false,
            "setupCommands": [
                {
                    "description": "Enable pretty printing",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

"miDebuggerServerAddress"원격 서버의 IP와 gdbserver 포트를 설정합니다.
"program"원격 실행 파일의 경로를 설정해야 합니다.


5. VS Code에서 원격 디버깅 시작

  1. VS Code의 디버깅 패널 (Ctrl + Shift + D)로 이동
  2. "Remote Debugging"을 선택
  3. 디버깅 시작 (F5)

📌 정상 연결되었을 때 VS Code 출력 예시

Remote debugging from host 192.168.1.100
Connected to target
Reading symbols from /home/user/project/my_program

이제 VS Code에서 브레이크포인트를 설정하고, 변수 값을 확인하면서 원격 디버깅을 진행할 수 있습니다.


6. 디버깅 중 주요 기능 사용

  • 중단점 설정:
  • processData 함수에 중단점을 설정하여 실행이 중지되는지 확인합니다.
  • 단계별 실행 (F10, F11)
  • F10: 현재 줄을 실행
  • F11: 함수 내부로 진입
  • 변수 값 확인 (Debug Console 활용)
  • print numbers → 벡터 값 출력
  • info locals → 로컬 변수 정보 확인

7. 디버깅 종료 및 정리

디버깅이 끝나면 다음 명령어를 사용하여 gdbserver를 종료할 수 있습니다.

Ctrl + C  # gdbserver 종료

VS Code에서도 디버깅을 중지하려면 Shift + F5를 누르면 됩니다.


결론

이번 실전 예제를 통해 VS Code에서 원격 서버의 C++ 프로젝트를 효과적으로 디버깅하는 방법을 익혔습니다. 이제 마지막으로 전체 내용을 정리해보겠습니다.

요약

본 기사에서는 Visual Studio Code에서 C++ 원격 디버깅을 설정하는 방법을 단계별로 설명하였습니다.

📌 주요 내용 정리

  1. VS Code Remote Development 개요
  • Remote – SSH 확장을 활용하여 원격 서버에서 개발 및 디버깅 가능
  1. C++ 리모트 디버깅의 필요성
  • 고성능 서버에서 빌드 및 실행 가능
  • 운영 환경과 동일한 조건에서 테스트 가능
  1. 원격 개발 환경 설정
  • SSH를 이용하여 VS Code에서 원격 서버에 연결
  • Makefile, CMake 등을 활용한 원격 빌드 설정
  1. gdbserver를 이용한 원격 디버깅
  • 원격 서버에서 gdbserver 실행 후 VS Code에서 디버거 연결
  1. launch.json 설정
  • VS Code에서 원격 gdbserver와 연결할 수 있도록 구성
  1. 원격 빌드 및 실행
  • SSH 터미널을 통해 원격 빌드 수행
  • tasks.json을 활용하여 자동화 가능
  1. 디버깅 문제 해결
  • SSH 연결 오류, gdbserver 실행 문제, 브레이크포인트 미작동 해결법 소개
  1. 실전 예제
  • 실제 C++ 프로젝트를 VS Code에서 원격 디버깅하는 방법 실습

🎯 결론

VS Code의 Remote – SSH 확장과 gdbserver를 활용하면, 로컬 환경에서도 원격 서버의 C++ 코드를 쉽게 빌드 및 디버깅할 수 있습니다.
이 방법을 활용하면, 대규모 프로젝트나 고성능 서버가 필요한 프로젝트에서도 효율적으로 개발을 진행할 수 있습니다.

이제 VS Code를 활용한 원격 C++ 개발 환경을 구축하여 보다 효과적인 개발과 디버깅을 경험해 보세요! 🚀

목차
  1. VS Code Remote Development 개요
    1. 주요 기능
    2. Remote Development 확장의 필요성
  2. C++ 리모트 디버깅의 필요성
    1. 로컬 디버깅 vs. 원격 디버깅
    2. C++ 리모트 디버깅이 필요한 이유
    3. 결론
  3. 원격 개발 환경 설정
    1. 1. VS Code에 Remote – SSH 확장 설치
    2. 2. SSH 설정 및 원격 서버 접속
    3. 3. VS Code에서 원격 서버 접속
    4. 다음 단계
  4. gdbserver를 이용한 원격 디버깅
    1. 1. gdbserver 설치 확인
    2. 2. 원격 서버에서 gdbserver 실행
    3. 3. 로컬 VS Code에서 GDB 연결
    4. 4. 디버깅 시작 및 중단
    5. 다음 단계
  5. launch.json 설정
    1. 1. launch.json 파일 생성 및 위치
    2. 2. launch.json 설정 예제
    3. 3. 설정 항목 설명
    4. 4. launch.json 설정 후 실행
    5. 5. 추가 설정: Attach 모드 사용
    6. 다음 단계
  6. 원격 빌드 및 실행
    1. 1. 원격 서버에서 C++ 프로젝트 빌드하기
    2. 2. VS Code에서 원격 빌드 자동화
    3. 3. 원격 실행 및 테스트
    4. 4. VS Code에서 원격 실행 자동화
    5. 다음 단계
  7. 원격 디버깅 문제 해결
    1. 1. SSH 연결 문제
    2. 2. gdbserver 실행 오류
    3. 3. 디버거 연결 실패
    4. 4. 디버깅 중 브레이크포인트가 작동하지 않음
    5. 5. gdbserver가 자동 종료됨
    6. 다음 단계
  8. 실전 예제: 리모트 C++ 프로젝트 디버깅
    1. 1. 프로젝트 예제 코드
    2. 2. 원격 서버에서 코드 컴파일 (디버그 빌드)
    3. 3. 원격 서버에서 gdbserver 실행
    4. 4. VS Code에서 원격 디버깅 설정
    5. 5. VS Code에서 원격 디버깅 시작
    6. 6. 디버깅 중 주요 기능 사용
    7. 7. 디버깅 종료 및 정리
    8. 결론
  9. 요약
    1. 📌 주요 내용 정리
    2. 🎯 결론