Visual Studio Code와 WSL ( Windows Subsystem for Linux ) 를 연결하여 C/C++ 컴파일 및 디버깅하는 방법을 다룹니다.
2021. 5 .23 최초작성
2021. 8. 1
윈도우에 Visual Studio Code를 설치합니다.
Visual Studio Code 설치하는 방법( Windows / Ubuntu )
https://webnautes.tistory.com/1841
Visual Studio Code를 실행하여 확장에서 Remote - WSL을 설치합니다.
WSL을 설치합니다.
WSL2를 설치하여 Ubuntu 20.04 사용하는 방법
https://webnautes.tistory.com/1847
WSL 우분투를 실행합니다.
wsl에서 빌드 관련 패키지를 설치합니다.
webnautes@DESKTOP-8V6I02P:~$ sudo apt-get install build-essential gdb
wsl에서 다음처럼 디렉토리를 생성합니다.
webnautes@DESKTOP-8V6I02P:~$ mkdir projects
webnautes@DESKTOP-8V6I02P:~$ cd projects
webnautes@DESKTOP-8V6I02P:~/projects$ mkdir helloworld
프로젝트 폴더로 이동합니다.
webnautes@DESKTOP-8V6I02P:~/projects$ cd helloworld
code를 실행합니다.
webnautes@DESKTOP-8V6I02P:~/projcets/helloworld$ code .
Installing VS Code Server for x64 (2b9aebd5354a3629c3aba0a5f5df49f43d6689f8)
Downloading: 100%
Unpacking: 100%
Unpacked 1824 files and folders to /home/webnautes/.vscode-server/bin/2b9aebd5354a3629c3aba0a5f5df49f43d6689f8.
code가 실행되면서 디렉토리 이름 HELLOWORLD 옆에 WSL:UBUNTU 20.04가 표시됩니다.
새파일 아이콘을 클릭하여 hello.cpp 파일을 생성합니다.
C언어도 가능할 것으로 보입니다.
오른쪽 아래에 C/C++ 확장 권장 메시지 박스가 보이면 Install 또는 설치를 클릭하여 설치합니다.
다음 코드를 입력합니다.
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0; } |
소스 코드를 선택한 상태에서 Visual Studio Code의 메뉴에서 터미널 > 기본 빌드 작업 구성을 선택합니다.
폴더에서 사용하는 언어에 맞추어 선택하세요.(안 보일 수도 있습니다.)
사용하는 언어가 C이면 gcc, 사용하는 언어가 C++이면 g++을 선택해주세요.
하나의 폴더에서 두 언어 다 사용하는 경우에는 g++을 선택해도 무방한 듯합니다.
템플릿에서 tasks.json 파일 만들기를 선택합니다.
Others를 선택합니다.
탐색기의 .vscode 폴더에 tasks.json 파일이 추가되고 편집기에서 해당 파일이 열립니다.
tasks.json 내용을 다음으로 교체하고 Ctrl + S를 눌러서 저장합니다.
{ "version": "2.0.0", "runner": "terminal", "type": "shell", "echoCommand": true, "presentation" : { "reveal": "always" }, "tasks": [ //C++ 컴파일 { "label": "save and compile for C++", "command": "g++", "args": [ "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": "build", //컴파일시 에러를 편집기에 반영 //참고: https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher "problemMatcher": { "fileLocation": [ "relative", "${workspaceRoot}" ], "pattern": { // The regular expression. //Example to match: helloWorld.c:5:3: warning: implicit declaration of function 'prinft' "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } }, //C 컴파일 { "label": "save and compile for C", "command": "gcc", "args": [ "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": "build", //컴파일시 에러를 편집기에 반영 //참고: https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher "problemMatcher": { "fileLocation": [ "relative", "${workspaceRoot}" ], "pattern": { // The regular expression. //Example to match: helloWorld.c:5:3: warning: implicit declaration of function 'prinft' "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } }, //바이너리 실행(Ubuntu) { "label": "execute", "command": "${fileDirname}/${fileBasenameNoExtension}", "group": "test" } ] } |
단축키를 설정해줍니다. 메뉴에서 파일 > 기본 설정 > 바로 가기 키를 선택합니다.
이미 설정되어 있는 단축키 목록을 보여줍니다.
사용자 정의로 바로 가기 키를 추가해야 합니다. 캡처화면에 빨간색 사각형으로 표시한 아이콘을 클릭합니다.
다음처럼 입력하고 Ctrl + S를 눌러서 저장합니다. 기본값을 무시하고 현재 입력한 값이 우선 적용됩니다.
(단 우분투의 경우 데스크톱 환경의 단축키가 우선입니다. 다른 곳에서 사용하지 않는 단축키를 사용해야 합니다.)
// 키 바인딩을 이 파일에 넣어서 기본값을 덮어씁니다. [ //컴파일 { "key": "ctrl+alt+c", "command": "workbench.action.tasks.build" }, //실행 { "key": "ctrl+alt+r", "command": "workbench.action.tasks.test" } ] |
탐색기에서 hello.cpp를 선택하고 Ctrl +Alt + C를 누르면 보이는 항목에서 save and compile for C++를 선택합니다.
편집 중이던 모든 파일 저장되고 앞에서 터미널에 컴파일 진행결과가 보입니다.
문제없이 컴파일이 진행되어다면 왼쪽 탐색기에 컴파일 결과물인 hello 파일이 보입니다.
Ctrl + Alt + R을 누르면 보이는 execute를 선택합니다.
실행 결과가 터미널에 보여집니다.
디버깅
진행하기 전에 위에서 작업했던 일부를 수정해야 합니다.
프로젝트 폴더의 .vscode 폴더에 있는 tasks.json 파일을 열어서 컴파일 시 디버그 정보를 포함하도록 합니다.
테스트 해보기 위해서 새로운 하위 폴더를 생성하여 add.cpp 파일을 추가합니다.
#include <iostream> using namespace std; int c = 0; int d = 100; int main() { int a = 2; int b = 2; int c = a + b; cout << a << " + " << b << " = " << c << endl; return 0; } |
확장에서 C++를 검색한 후, C/C++ 항목을 선택한 후 WSL: Ubuntu 20.04에 설치를 클릭합니다.
이미 적용되어 다음처럼 보일 수도 있습니다.
숫자 5 왼쪽으로 마우스 커서를 이동 후. 마우스 왼쪽 버튼을 클릭하면 빨간점이 표시됩니다.
디버깅이 시작되면 잠시 멈추게되는 브레이크 포인트입니다.
F5를 누릅니다.
C++(GDB/LLDB)를 선택합니다.
컴파일러 경로가 /usr/bin/g++인 g++를 선택합니다.
잠시 기다리면 디버깅이 시작됩니다.
F11을 눌러서 다음 줄이 실행되게 할 수 있습니다.
왼쪽에 보이는 변수 창에 지역 변수가 업데이트 됩니다.
이후에는 브레이크 포인트를 지정하고 F5를 누르면 디버깅이 시작됩니다.
main함수 에서 사용하는 전역 변수 c는 변수 항목의 Locals에 추가되었는데
전역변수 d의 경우에는 추가되어 있지 않습니다.
이 경우 조사식에 마우스 커서를 가져가면 보이는 + 아이콘을 클릭하고
추가할 변수 이름을 입력후 엔터를 누르면
해당 변수의 값이 보입니다.
'개발 환경 > WSL2 개발환경' 카테고리의 다른 글
Windows에 설치한 WSL2 및 Ubuntu 삭제하는 방법 (0) | 2024.06.23 |
---|---|
WSL2를 설치하여 Ubuntu 22.04 사용하는 방법 (0) | 2024.03.11 |
WSL2 - Ubuntu의 resolv.conf에서 읽은 nameserver IP를 DISPLAY 환경변수에 저장하는 스크립트 작성 (0) | 2023.10.04 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!