IT/파이썬 & vscode

[vscode] C/C++ 디버거 툴 설치 및 컴파일 방법

크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널 2023. 2. 19. 23:19
반응형

[vscode] C/C++ 디버거 툴 설치 및 컴파일 방법

- vscode에서 C/C++ 디버깅을 위해서는 디버거 툴 설치가 필요하다. 차근차근 따라오도록 하자.

반응형

 


1. MSYS2 다운로드 및 설치

 - C/C++ 컴파일러인 gcc 컴파일러를 먼저 설치해야 한다.

 

<MSYS2 홈페이지 바로가기>

 

 

다운받아진 파일을 실행시켜줍시당

Next~! 클릭

설치를 원하는 위치를 지정한 후에 다음(Next)를 눌러주세요. 저는 D드라이브로 위치를 변경해줬는데,

변경하지 않는다면 기본 디폴트 저장 경로는 'C:\\msys65'로 지정됩니다.

시작 메뉴에 넣을 것인지 물어보네요 ㅎㅎ 바탕화면도 아니고 시작메뉸데 뭐.. Next를 눌러줍시다.

반응형

 

고럼 요렇게 쭈루루룩 설치가 됩니다.

 


반응형

 

2. MSYS2 터미널에서 패키지 업데이트

 

   ① "pacman -Syu" 입력

   ② "Y" 입력 x 2

  ③  설치완료되면 터미널 재실행

 

  ④ "pacman -Su" 입력

      ※ 만약 Fail이 뜨면, ① 명령어 다시 수행할 것 (중간에 업데이트 끊긴거임)

   ⑤ "Y" 입력

 

   ⑥ "pacman -S --needed base-devel mingw-w64-x86_64-toolchain" 입력

         - toolchain에 gcc 컴파일러가 포함되어있다.

 

       "pacman -S mingw-w64-x86_64-gtk4" 입력

       "pacman -S mingw-w64-x86_64-python-gobject" 입력

   

반응형

 

 

   ⑦ Enter 입력

        - 엔터키는 모두 설치를 의미한다.

    ⑧ "Y" 입력 → 설치 완료

    


3. 환경변수 설정

 

- 컴파일러를 제대로 사용하기 위해서는 환경변수에 PATH를 등록이 필요하다.

 

① 윈도우 창에서 "환경 변수" 검색 - "시스템 환경 변수 편집" 실행

시작에서 환경 변수만 검색하셔도 '시스템 환경 변수 편집'을 찾으실 수 있습니다.

반응형

 

② "고급" 클릭 - "환경 변수(N)" 클릭

고럼 요런 화면이 뜨는데 '고급'탭에서 하단의 '환경 변수(N)'을 클릭해주세요~

 

③  시스템변수에서 Path 클릭 - "편집(I)" 클릭

시스템변수의 Path를 찾아 편집해줍시다.

 

 

④ 새로만들기(N) 클릭 - "C:\\msys64\\mingw64\\bin" 입력 - "확인" 클릭

경로는 msys2 설치 위치 내, 다운받았던 컴파일러의 bin 폴더를 지정해줘야 합니다.

저의 경우 mingw64 패키지를 설치하였기 때문에 mingw65\\bin으로 지정해줬어요. 

물론 설치위치는 사용자가 설치시 변경할 수 있기 때문에 다를 수 있습니다.

반응형

 

⑤ cmd창에서 "gcc -v" 입력

        -"Ctrl + R" 입력 후 실행창에서 cmd 입력

 

 

   - 정상 설치 여부에 따라 아래와 같이 차이가 있다.

이렇게 뜨면 비정상 설치됨 (설치 재수행 및 cmd창 다시 열어서 시도 필요)
이렇게 뜨면 정상 설치됨

★ cmd창이 열려있는 경우에 gcc -v를 하면 비정상 설치된 것처럼 보임. (cmd창 껐다가 다시 켜서 gcc -v 입력) ★


4. C/C++ 디버거 설치하기

 

① vscode의 Extension 탭에서 "C/C++" 입력 - 상위 3개 Extension 설치

 

 


반응형

 

5. C/C++ 디버깅 실행하기 (F5)


※ 들어가기에 앞서 : JSON 파일 설정하기

Ctrl+Shift+P 입력 후, C/C++을 검색한다.  Edit Configurations (UI)를 선택한다.

여기서 C/C++ 구현 편집 (UI) 를 선택하면, 설정화면이 나오게 된다.

여기서 다음과 같이 설정하고 창을 닫으면 된다. 즉시저장이 된다.

1. 구성이름 : win32

2. 컴파일러 경로 : c:/mingw/bin/g++.exe

- \ 역슬러시를 쓰지말고, / 슬러시를 쓴다. 주의하자

- mingw설치를 안했다면, 전 포스팅을 참조하자.

3. Compiler arguments : 빈칸으로 둔다. (컴파일러 추가 옵션 값)

4. IntelliSense : 코딩할때 큰 도움이되는 기능, gcc-x64로 선택

5. 경로 포함 :건드리지 않는다.

6. 정의 : 건드리지 않는다. _IntelliSense의 추가 옵션 값

이렇게 설정이 끝나면 .vscode 폴더 자동 생성되고,c_cpp_properties.json 파일 생성이 완료된다. UI에서 설정한 값 대로, json파일이 생성 된 것이다. 이 파일이 있어야만 다른 json파일의 기본값들을 자동으로 채워준다.

 


① 소스코드 작성

 - 폴더에 새 파일을 추가하고 파일명은 C언어 : '~~.c'로, C++ : '~~.cpp'로 파일을 생성한다.

 - C언어와 C++ 예시를 복사 붙여넣기 후 주석을 풀어준다.

 - 전체주석 설정 : Ctrl+a → Ctrl+k+c

 - 전체주석 해제 : Ctrl+a → Ctrl+k+u

※ 빌드만 하는 경우, 빌드 명령어 : Ctrl+Shift+B

// // C++ 예시
// #include <iostream>
// using namespace std;
// class App
// {
// public:
//     void run(){cout<<"run!!!"<<endl;}
// };
// int main()
// {
//     App app;
//     app.run();
//     return 0;
// }



// //C언어 예시
// #include <stdio.h>
// int main(void)
// {
//     printf("hi!!!\n");
//     return 0;
// }

★ C++ 예시에서 include 읽지 못하는 이유 ★

- 아래와 같이 <iostream>을 읽지 못하는 이유는 파일 이름이 'test.c' 이기 때문이다.

- 파일 이름을 'test.cpp'로 변경하니 잘 읽는다.


반응형

 

 

② F5 입력 - 'C++ (GDB/LLDB)' 선택

 

③ 'gcc.exe' (C언어용) 또는 'g++.exe' (C++용) 선택

 

※ 빌드가 안될때? 자신의 터미널의 위치가 현재 코드가 있는 위치가 맞는지 다시한번 확인해보자? 잘 모르겠으면, 터미널을 종료하고 다시 빌드를 시도해보자.

 

④ 'launch.json' 파일 종료 - 탐색기 클릭

 - 빌드에 성공하면 자동으로 'launch.json' 파일을 오픈시킨다. 그냥 무시하고 끄면 된다.

반응형

 

- 빌드에 성공하면 '.vscode'라는 폴더가 생성되며 그 안에 'launch.json'과 'tasks.json' 파일이 생성되어있는 것을 볼 수 있다. 또한 상위 디렉토리에 .exe파일도 생성되어있다.

- .exe 파일을 실행했을 때 아무일도 일어나지 않는다면, 아래 글을 참고하길 바란다.

[C/C++] 프로그램 종료 후 콘솔창 유지시키기

 

⑤ F5 다시 입력

- F5를 다시 입력하면 터미널에 hi!!!가 잘 실행되는 것을 볼 수 있다.

 


6. *.json 파일 수정

 

1) launch.json 파일 수정

 - 아래 소스를 복붙한다.

gdb.exe 파일이 저장되어 있는 위치로 경로 수정해야 한다.

반응형

 

{
  // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.
  // 기존 특성에 대한 설명을 보려면 가리킵니다.
  // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요.
  "version": "0.2.0",
  "configurations": [
      {
          "name": "gcc.exe - 활성 파일 빌드 및 디버그",
          "type": "cppdbg",
          "request": "launch",
          "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
          "args": [],
          "stopAtEntry": false,
          "cwd": "${fileDirname}",
          "environment": [],
          "externalConsole": false,
          "MIMode": "gdb",
          "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
          "setupCommands": [
              {
                  "description": "gdb에 자동 서식 지정 사용",
                  "text": "-enable-pretty-printing",
                  "ignoreFailures": true
              }
          ],
          "preLaunchTask": "C/C++: gcc.exe 활성 파일 빌드"
      }
  ]
}

 

2) tasks.json 파일 수정

 - 아래 소스를 복붙한다.

 

gcc.exe 파일이 저장되어 있는 위치로 경로 수정해야 한다.

c언어의 경우 : gcc.exe로 파일명 변경

C++의 경우 : g++.exe로 파일명 변경

반응형

 

{
  "tasks": [
      {
          "type": "cppbuild",
          "label": "C/C++: gcc.exe 활성 파일 빌드",
          "command": "C:\\msys64\\mingw64\\bin\\gcc.exe",
          "args": [
              "-g",
              "${file}",
              "-o",
              "${fileDirname}\\${fileBasenameNoExtension}.exe"
          ],
          "options": {
              "cwd": "${fileDirname}"
          },
          "problemMatcher": [
              "$gcc"
          ],
          "group": {
              "kind": "build",
              "isDefault": true
          },
          "detail": "디버거에서 생성된 작업입니다."
      }
  ],
  "version": "2.0.0"
}

 


반응형

 

★ 빌드 에러 나는 경우 ★

1. Unable to start debugging. Program path ~

2. Unable to start debugging. Unexpected GDB output from command "-environment-cd ~~

3. launch: progrm " does not exist.

 

4. 컴파일러 오류 발생

 

반응형

 

원인 1 : 폴더 경로 중 한국어가 있는 경우

원인 2 : C언어로 빌드(.c 파일)했다가 C++로 다시 빌드(.cpp 파일)하는 경우

 

==> Step 6의 *.json 파일들을 다시 수정해야 한다.

 


 

반응형