VS Code의 업데이트로 이 보다 간단하게 WSL 워크스페이스를 사용할 수 있게 되었습니다.
이 방법보다는 여기에 있는 방법을 추천합니다.
WSL로 gcc를 연결했다면 wsl로 gdb를 연결할 수 있다.
먼저 당연하지만 ubuntu를 켜서 sudo apt-get install gdb로 gdb를 설치해야 한다!
먼저
task.json에 있는 빌드에서
-g 옵션을 추가해줘야 디버깅을 할 수 있다.
코드에서 숫자부분 왼쪽을 누르면 브레이크 포인트를 걸 수 있다.
F5를 눌러보면
이렇게 나올텐데 gdb를 고른다.
이렇게 나오는데 조금 귀찮게 설정을 해야한다.
이건 내가 설정한 것이다.
우선 program부분을 보면 경로가 이상하게 되어 있는데
이게 linux식 경로라서 그렇다.
원래대로라면 C://Users/ … 이렇게 시작하는 경로인데 C:// 대신 /mnt/c/
를 쓴다고 생각하면 된다. 또한 \대신에 /를 써야한다.
"cwd"도 그렇게 바꾸고 args는 저렇게 한다.
그 다음에 pipProgram 에 bash의 경로를 써야한다.
원래 bash.exe는 Windows/System32에 들어있다.
근데 그걸로 하면 파일을 찾을 수 없다면서 에러가 난다.
아무래도 system32폴더에 대한 어떤 권한 관련 에러일 것 같다.
그래서 system32에 있는 bash.exe를 복사해서
windows에 sysnative폴더를 새로 만든 다음 그 안에 붙여넣고 경로를 저렇게 하면 된다.
sourceFileMap은
/mnt/c를 c:\\ 로 매핑해주는 것 같은데 자기 소스파일이 있는 위치마다 매핑해주면 될 것 같다.
ex)
그러면 다시 코드로 돌아가서 F5를 누르면 디버깅을 할 수 있다.
만약에 작업 디렉토리의 하위폴더를 만들어서 범용적으로 작업하는 용도로 쓰고 싶다면 다음과 같이 적으면
하위디렉토리에서도 컴파일을 하고 F5를 눌러서 디버깅을 할 수 있다.
그런데 WSL에서 vscode로 gdb를 이용할 때는 stdin, stdout를 이용할 수가 없다.
그래서 gdb를 써도 입력,출력을 std로 받는 건 할 수 없다.
대신에 폴더에 in이라는 파일을 만들어두고 인자에 저렇게 적어놓으면 in에 미리 적어놓은 걸로 stdin을 대신해서 입력할 수 있다.
out파일로 stdout의 결과가 나올 것이다. 하지만 stdout은 결과를 바로 볼 수 있지만
이렇게 하면 실행이 종료되어야 내용을 볼 수 있다.
아니면
이렇게 설정하면 stdout대신 디버그 콘솔에서 볼 수 있다. 하지만 stdin은 안된다.
'Programming > Visual Studio Code' 카테고리의 다른 글
Visual Studio code(vscode) WSL 사용하기 (11) | 2019.07.12 |
---|---|
원격서버 vscode로 연결해서 작업하기 (331) | 2019.07.11 |
Visual Studio Code Git 연동하기 (224) | 2018.05.21 |
Visual Studio code(vscode) WSL gcc 사용법 (57) | 2018.05.21 |
Visual Studio Code C / C++ 디버깅하기 (7) | 2018.01.11 |