지난글에서는 VSCode에서 C++ 코드를 '실행(Run)'만 할 수 있는 설정을 했다.
하지만 PS 할 때 디버깅 없이 로그만 주구창창찍어보며 하기에는 너무 귀찮다.
지난번에 설치했던 Code Runner는 코드 실행만 할 수 있고 디버깅 기능은 없기때문에 이번에는 디버깅 할 수 있도록 설정해봅시다.
- 우선 디버깅을 할 수 있도록 원하는 줄에서 fn+F9 를 눌러 브레이크포인트를 걸어보자. 다만, 디버깅을 하기전에 .cpp파일 말고, 실행파일(Code Runner가 실행할때 생성하는 파일)이 필요하니 재생버튼을 한번 눌러서 코드를 최소 한번은 실행시켜줘야한다.
- 그리고 디버깅 단축키인 fn+F5 를 눌러보자. 그럼 아래와 같은 창이 뜰것이다. C++ (GDB/LLDB) 선택!
- 그럼 이어서 또 다른 창이 뜬다. g++ build and debug active file 선택!
- launch.json 파일이 곧바로 생성된다.
- 저장(Command + S)을 하고, 다시 .cpp파일로 돌아와서 fn+F5 를 누르면 아래와 같이 g++ build active file 명령어를 찾을 수 없다고 경고창이 뜬다. Configure Task 를 클릭!
- 방금 경고창에 떴던 명렁어인 C/C++:g++ build active file 을 선택
- 그럼 아래와 같이 tasks.json 파일이 생성된다. 거의 다 왔다.
- 여기서 조금만 더 수정하면 된다. 위에까지만 설정해도 디버깅은 되지만, 지난 포스팅 처럼 모던C++(11이상)을 지원하지 않는 세팅이다. "args": 부분을 조금 수정해야한다. "-g" 밑에 "-std=c++14" 를 추가해주자.
tasks.json
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "type": "shell", "label": "g++ build active file", "command": "/usr/bin/g++", "args": [ "-g", "-std=c++14", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "/usr/bin" }, "problemMatcher": [ "$gcc" ], "group": "build" } ] }
- launch.json 은 따로 수정하지 않아도 된다. 혹시몰라서 코드는 첨부
launch.json
{ // 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": "g++ build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "lldb", "preLaunchTask": "g++ build active file" } ] }
- 다시 .cpp 파일로 돌아와서 fn+F5 를 눌러 디버깅을 하면 잘 된다!
+) 내용 추가
디버깅 실행시키고 새로운 input을 받으려고 암만 VSCode아래 터미널창에 입력해봐도 입력이 안된다.
launch.json 의 "externalConsole" 을 true 로 설정해주면, 디버깅 시 새로운 터미널창이 열리면서 거기서는 input값을 입력할 수 있다.
'개발자 > C++(Linux, Window)' 카테고리의 다른 글
C++ : 범위 기반 for 반복문 (0) | 2021.09.20 |
---|---|
[C++] STL 2차원 vector 정의 및 사용 (0) | 2021.09.20 |
Wrapper 클래스 (0) | 2021.03.24 |
2D 배열의 관련 연산 최적화 (0) | 2020.10.07 |
캐시 라인,( C++ STL std::list 보다 std:vector를 써야하는이유) (0) | 2020.10.04 |