vscode gcc g++ c/c++ 디버깅 컴파일 하기 위한 tasks.json, launch.json Makefile
1. 먼저 vscode extension 으로
c/c++, c/c++ Extension Pack 이 설치되어 있어야 한다.
2. makefile 의 cflag, lflag에 -g로 디버그 옵션이 있어야 디버깅이 뜬다.
------------------------------
tasks.json
------------------------------
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "make build",
"command": "make",
"args": [
"-j4",
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "makefile project"
}
]
}
------------------------------
launch.json
------------------------------
{
"version": "2.0.0",
"configurations": [
{
"name": "build and debug for c++",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${workspaceFolderBasename}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "make build"
}
],
}
------------------------------
launch.json for mac (using lldb)
------------------------------
{
"version": "2.0.0",
"configurations": [
{
"name": "(lldb) 시작",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${workspaceFolderBasename}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "make build"
},
],
}
------------------------------
hello_gcc 폴더에 hello.c, f1.c 2개 파일이 있는 프로젝트
gcc Makefile
------------------------------
# 컴파일러 지정
CC = gcc
# 컴파일 옵션 (-Wall: 경고 메시지 출력, -g: 디버깅 정보 포함)
CFLAGS = -Wall -g
# 실행 파일 이름
TARGET = hello_gcc
# 소스 파일 목록
SRCS = hello.c \
f1.c
# 오브젝트 파일 목록 (%.c → %.o 변환)
OBJS = $(SRCS:.c=.o)
# 기본 규칙: 실행 파일 만들기
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
# 개별 소스 파일을 오브젝트 파일로 컴파일
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
# 정리 (생성된 바이너리 및 오브젝트 파일 삭제)
clean:
rm -f $(TARGET) $(OBJS)
------------------------------
hello_g++ 폴더에 hello.cpp, f1.cpp 2개 파일이 있는 프로젝트
g++ Makefile
------------------------------
# 컴파일러 지정
CXX = g++
# 컴파일 옵션 (-Wall: 경고 메시지 출력, -g: 디버깅 정보 포함)
CXXFLAGS = -Wall -g
# 실행 파일 이름
TARGET = hello_g++
# 소스 파일 목록
SRCS = hello.cpp \
f1.cpp
# 오브젝트 파일 목록 (%.cpp → %.o 변환)
OBJS = $(SRCS:.cpp=.o)
# 기본 규칙: 실행 파일 만들기
$(TARGET): $(OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^
# 개별 소스 파일을 오브젝트 파일로 컴파일
%.o: %.c
$(CXX) $(CXXFLAGS) -c -o $@ $<
# 정리 (생성된 바이너리 및 오브젝트 파일 삭제)
clean:
rm -f $(TARGET) $(OBJS)
------------------------------
windows 용 gcc, g++ 컴파일러
w64devkit
https://github.com/skeeto/w64devkit/releases
댓글
댓글 쓰기