Rst

윈도우 VSCODE에서 gdb 설정하기

/Tools

평소 자바를 사용해서 알고리즘 문제를 풀어왔었는데 c++로 연습을 하려니 이것저것 복잡한게 많았다. 그중에 계속 해결하지 못했던 디버깅문제를 해결해서 이 글에 정리했다.

컴파일러 환경 및 vscode 설정

윈도우와 mingw 컴파일러 환경에서 gdb를 사용했다. 이때 vscode의 기본 settings.json파일에 다음의 내용을 포함시켰다.
아래 처럼 빌드시 gcc.exe, g++.exe을 사용해야한다. 이것이 아니라 cpp.exe등을 사용하는 경우에 gdb가 읽을 수 없다는 에러 메세지를 확인했다.
vscode user단위의 settings.json, workspace단위의 tasks.json, launch.json에서 컴파일러를 올바르게 지정했는지 확인해야한다.

{
    "C_Cpp.default.compilerPath": "경로\\g++.exe",
    "c-cpp-compile-run.c-compiler": "경로\\gcc.exe"
}

workspace 설정

나는 workspace단위로 실행파일 지정을 다르게 사용해서 workspace아래의 .vscode폴더 아래의 파일들을 수정했는데 그럴필요가 없다면 user단위의 settings.json에서 "launch", "tasks"프로퍼티를 아래 내용처럼 정의하면 된다.

tasks.json
이 파일에선 먼저 대상 소스코드를 빌드하는 명령을 저장해놓는 역할을 한다. 이 작업을 디버깅 명령 전에 먼저 실행 시키도록 할 것이다. 디버깅이 가능하기 위해선 컴파일시 -g옵션이 꼭 필요하다는걸 알아두자

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\DevTool\\mingw\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

launch.json
여기선 디버깅 명령을 정의 할 것이다.
아래의 내용을 간추리자면

간단한 gdb명령

gdb는 원래 콘솔 환경에서 명령, 질의를 통해 디버깅을 하는 툴로 사용되는것 같다. 유튜브나 구글 검색을 하면 유용한 정보를 알 수 있는데, 위의 문제를 해결하려다 조금 알게된 명령어만 좀 정리해두려 한다.

디버깅 가능한 실행파일을 gdb 실행파일명으로 실행하면 gdb가 작동한다.
이때 run명령을 하기 전까지 설정을 할 수 있는 상태인데, 즉 아직 대상 프로그램이 동작하고 있지않다.
run을 하고나면 break point가 나오기전, input등을 받아야하는 상태가 오기전까지 프로그램이 실행된다.

input은 console에서 하는것처럼 입력해주면된다.

comments powered by Disqus