Skip to content

문제 해결 (Troubleshooting)

이 문서는 실습 환경 구축 및 기초 터미널 사용(01~05) 과정에서 흔히 발생하는 문제와 그 해결 방법을 안내합니다.

Windows/WSL 설치 및 연결 문제

WSL 설치 실패 또는 오류 발생

  • 증상: wsl --install 실행 시 설치가 멈추거나 오류 발생
  • 원인: PC의 가상화(Virtualization) 기능 비활성화 또는 Windows 관련 기능 누락
  • 해결 방법:
    • 작업 관리자(Ctrl+Shift+Esc) 성능 탭에서 가상화 사용 여부 확인
    • 비활성화 시 PC 재부팅 후 BIOS/UEFI 설정에서 Intel VT-x 또는 AMD-V 기능 활성화
    • Windows 'Windows 기능 켜기/끄기'에서 'Linux용 Windows 하위 시스템' 및 '가상 머신 플랫폼' 체크

Ubuntu 24.04 또는 GCC 13 확인 불가

  • 증상: WSL 설치 후 Ubuntu 버전이 24.04가 아니거나 g++ --version이 13.x가 아님
  • 해결 방법:
    • 버전 확인: lsb_release -a 명령어 사용
    • Ubuntu 24.04가 아닌 경우 Microsoft Store에서 "Ubuntu 24.04" 검색 후 설치
    • GCC 13 설치 명령어:
      bash
      sudo apt update
      sudo apt install g++-13
    • 기본 컴파일러 설정 명령어:
      bash
      sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 100

VS Code에서 WSL 환경 연결 실패

  • 증상: VS Code 좌측 하단 영역 또는 명령 팔레트에서 WSL 접속 실패
  • 원인: WSL 확장 프로그램 누락 또는 WSL 백그라운드 프로세스 오류
  • 해결 방법:
    • VS Code Extensions에서 'WSL' (Microsoft) 설치 확인
    • PowerShell에서 wsl -l -v로 Ubuntu 상태 확인
    • PowerShell에서 wsl --shutdown 실행 후 VS Code에서 재연결 시도

macOS 환경 세팅 문제

Homebrew 설치 실패

  • 증상: Homebrew 설치 명령어 실행 시 진행 불가
  • 원인: Command Line Tools 미설치
  • 해결 방법:
    • 터미널에서 xcode-select --install 실행
    • Homebrew 설치 스크립트 재실행
    • 스크립트 완료 후 화면의 "Next steps" 지시사항을 따라 환경 변수 추가 명령어 실행

g++-13 명령어 인식 불가 및 clang++ 혼동

  • 증상: g++-13 명령어 오류 발생 또는 g++ --version 결과가 Apple clang으로 표기됨
  • 원인: gcc@13 패키지 미설치 또는 명령어 혼용
  • 해결 방법:
    • Homebrew로 컴파일러 설치: brew install gcc@13
    • macOS에서는 g++ 대신 반드시 g++-13 명령어를 사용하여 컴파일:
      bash
      g++-13 main.cpp -std=gnu++20 -O2 -pipe -Wall -o main

터미널 및 파일 관리 문제

권한 거부 (Permission denied)

  • 증상: 명령어 실행 시 권한 거부 메시지 출력
  • 원인: 대상 파일에 실행 권한이 없거나, Windows/WSL 환경에서 파일 시스템 경로 충돌 발생
  • 해결 방법:
    • 파일 실행 권한 부여: chmod +x 파일명
    • Windows/WSL에서는 반드시 Windows 경로(/mnt/c/...)가 아닌 WSL 홈 경로(~)에서 실습 진행

파일 또는 디렉토리 찾을 수 없음 (No such file or directory)

  • 증상: cd, ls, 컴파일 명령어 실행 시 파일 및 디렉토리 누락 오류
  • 원인: 현재 작업 위치 불일치 또는 파일명 오타
  • 해결 방법:
    • pwd 명령어로 현재 경로 확인
    • ls 명령어로 목적지 파일 및 디렉토리 존재 유무 파악
    • 대소문자 구분 및 철자 확인

코드 컴파일 및 실행 문제

컴파일 명령 오류 (g++ 옵션 및 파일명 오타)

  • 증상: 컴파일 과정에서 명령어 구문 오류 또는 파일 인식 실패
  • 해결 방법:
    • 지정된 컴파일 명령어를 정확하게 입력:
      • Windows/WSL: g++ main.cpp -std=gnu++20 -O2 -pipe -Wall -o main
      • macOS: g++-13 main.cpp -std=gnu++20 -O2 -pipe -Wall -o main
    • main.cpp 외의 파일 컴파일 시 입력 파일명과 -o 뒤의 출력 파일명을 실제 파일명에 맞게 변경

파일 저장 누락으로 인한 이전 코드 실행

  • 증상: 소스 코드를 변경했으나 실행 결과가 이전과 동일함
  • 원인: VS Code 편집기에서 파일을 저장하지 않은 채 컴파일 수행
  • 해결 방법:
    • 단축키 Ctrl+S (macOS: Cmd+S)로 파일 저장 확인
    • VS Code 탐색기 탭에서 파일명 우측의 흰색 원형 아이콘(미저장 표시) 유무 확인

프로그램 무한 루프 및 강제 종료 방법

  • 증상: ./main 실행 후 프로그램이 종료되지 않으며, 터미널 프롬프트가 나타나지 않음
  • 원인: 코드 로직 오류로 인한 무한 루프 또는 입력 대기 상태 유지
  • 해결 방법:
    • 터미널 영역 클릭 후 Ctrl+C를 입력하여 실행 중인 프로세스 강제 종료
    • 소스 코드 로직 수정 후 재저장 및 재컴파일

스택 메모리 초과 (Stack Overflow)로 인한 비정상 종료

  • 증상: 대용량 배열 선언이나 깊은 재귀 함수 호출 시 Segmentation fault 메시지와 함께 프로그램 강제 종료
  • 원인: 운영체제의 기본 스택 메모리 제한(일반적으로 8MB) 초과
  • 해결 방법:
    • 크기가 큰 배열(예: int arr[10000000]; 등)은 함수 내부(지역 변수)가 아닌 외부의 전역 변수로 선언
    • 터미널에서 스택 메모리 제한 임시 해제: ulimit -s unlimited 명령어 실행 후 프로그램 재실행

기타 문제 질문 방법

문서에 안내된 내용으로 해결되지 않는 문제가 발생하여 질문할 때는 다음 정보를 포함해야 합니다.

  • 사용 환경: Windows/WSL2 Ubuntu 또는 macOS
  • 문제 발생 상황: 문제가 발생한 시점의 구체적인 조작 단계 및 실행한 터미널 명령어
  • 오류 메시지 전문: 터미널에 출력된 에러 로그 전체 (이미지 대신 텍스트 형태로 복사하여 첨부)
  • 전체 화면 캡처: 문제 상황과 파일 목록, 터미널 등이 모두 보이도록 VS Code 전체 화면을 캡처한 이미지
  • 소스 코드: 컴파일이나 실행 문제인 경우 사용 중인 소스 코드 전체 내용