앞선 강좌에서 이어집니다.
개발 환경 구축하는 과정 자체는 앞선 강좌에 포함되어 있습니다.
https://reo91004.tistory.com/2
우선, 디버깅 하려는 파일 경로에 한글이 포함되어있으면 오류가 납니다.
그래서 강좌에서는 따로 C드라이브에 'C++ Debug' 라는 폴더를 만들고 그곳을 디버깅 전용으로만 쓰도록 설정했습니다. (폴더 이름은 한글을 제외하고 아무거나 하셔도 무방합니다.)
중요! C++과 Python 둘 모두 디버깅을 하시고 싶으신 분들은 C++ 먼저 설정해주셔야 합니다.
C/C++ 디버깅
이 과정은 C와 C++ 모두 해당됩니다. 제 화면은 C++을 기준으로 설정했습니다.
1. F5를 누른 후 'C++ (GDB/LLDB)'를 선택해줍니다.
2. 'g++.exe' 를 선택해줍니다.
아래와 같은 화면으로 이동되며 디버깅이 가능케 됩니다.
F5 : 디버깅 시작
F9 : 중단점 설정
F10, F11 : 디버깅 줄 단위로 실행 (F10은 함수로 들어가지 않고, F11은 함수로 들어감.)
Shift + F11 : 디버깅 하는 현재 함수에서 탈출
그러나, VS Code의 편집기에서는 디버깅 시에는 입력이 되지 않습니다.
(수정 : 원래 불가능했던 것 같은데 현재는 입력이 되어 밑의 설정은 취향 차이입니다.)
이럴 땐 생성된 .vscode 폴더의 launch.json에서
"externalConsole": false를 "externalConsole": true 로 바꾸어줍니다.
다시 디버깅을 하면, 정상적으로 작동되는 것을 확인하실 수 있습니다.
Python 디버깅
1. 본인이 파이썬을 쓰는 작업 환경에서 파이썬 파일을 열고, 구성을 추가해줍니다.
2. Python File을 선택해줍니다.
3. 바로 정상적으로 작동됩니다.
F5 : 디버깅 시작
F9 : 중단점 설정
F10, F11 : 디버깅 줄 단위로 실행 (F10은 함수로 들어가지 않고, F11은 함수로 들어감.)
Shift + F11 : 디버깅 하는 현재 함수에서 탈출
그러나, VS Code의 편집기에서는 디버깅 시에는 입력이 되지 않습니다.
(수정 : 원래 불가능했던 것 같은데 현재는 입력이 되어 밑의 설정은 취향 차이입니다.)
이럴 땐 생성된 .vscode 폴더의 launch.json에서
"externalConsole": false를 "externalConsole": true 로 바꾸어줍니다.
다시 디버깅을 하면, 정상적으로 작동되는 것을 확인하실 수 있습니다.
혹시 정상적으로 작동되지 않는 분들을 위해 제 launch.json 파일 전문을 첨부합니다. 그대로 복사 붙여넣기 하셔도 무방할 듯 합니다. (C++의 "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe", 부분은 차이가 있을 수 있습니다.)
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true
},
{
"name": "g++.exe - 활성 파일 빌드 및 디버그",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
"setupCommands": [
{
"description": "gdb에 자동 서식 지정 사용",
"text": "-enable-pretty-printing",
"ignoreFailures": true,
},
{
"description": "gdb에서 STL 진입 방지",
"text": "-interpreter-exec console \"skip -gfi **/bits/*.h\""
}
],
// 디버깅 콘솔 : -exec skip -gfi **/bits/*.h
"preLaunchTask": "C/C++: g++.exe 활성 파일 빌드"
}
]
}
여기서부턴 맥북 설정
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": ["-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.o", "--std=c++11"],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Debug",
"type": "lldb",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.o",
"args": ["Hello", "World"],
"cwd": "${fileDirname}/",
"preLaunchTask": "C/C++: g++ build active file"
}
]
}
이제 C/C++과 Python 둘 다 디버깅을 모두 이용할 수 있지만, 둘 다 따로따로 디버깅이 설정되어있기 때문에
C/C++ 디버깅 할 때는 왼쪽 디버깅 메뉴에서 g++.exe를 선택하고,
Python을 디버깅 할 때는 Python을 선택해주셔야 합니다.
함께 보면 좋을 강좌들
(볼드 처리는 꼭 보셨으면 하는 강좌입니다.)
https://reo91004.tistory.com/170
(디버깅 할 때 STL 사용 시, STL 정의 헤더파일로까지 들어가는 것을 방지하는 방법입니다.)
https://reo91004.tistory.com/115
(디버깅 시 STL 정의가 아닌 내부 요소를 보여주도록 하는 방법입니다.)
https://reo91004.tistory.com/55
'● 이것저것 설정 강좌' 카테고리의 다른 글
[VS Code] VS Code에서 디버깅 시 STL(vector 등등) 요소 출력하기 (0) | 2022.04.11 |
---|---|
[VS Code] VS Code에서 <bits/stdc++.h> 헤더 파일 사용하기 (0) | 2022.02.03 |
[VS Code] VS Code 자동 정렬 시 중괄호 같은 줄에 넣기 (1) | 2022.01.18 |
[VS Code] VS Code로 Java 개발환경 구축하기 (컴파일, 빌드까지) (0) | 2021.09.03 |
[VS Code] VS Code로 C/C++, Python 개발환경 구축하기 (컴파일, 빌드까지) (2) | 2021.08.21 |
자기계발 블로그