[dev] vscode 디버깅 잘하기
VS Code에서 디버깅 (잘)하기
기초
view 설정
- 좌측 activity bar 아이콘이나 ctrl + shift + D 누르면 디버그 모드로 진입한다
- 상단 메뉴의 Debug 메뉴에는 자주 쓰이는 command 가 있다
기본 설정
- 자동으로 디버깅 언어를 감지해서 설정해주지만, 그렇지 않을 경우 manual로 직접 설정해 주어야 한다
- 설정은 launch.json에서 설정할 수 있다
TOOLBAR 구성
- Continue / Pause
F5
- 디버깅 시작 / 일시중지
- Step Over
F10
- 다음 줄에 나오는 명령을 실행한 후, 다음 줄로 점프!
- 메서드나 함수가 있어도 무시
- Step Into
F11
- 다음 줄에 함수 호출이 포함되어 있다면 해당 함수로 점프 후, 첫 줄에서 멈춤
- 함수 안으로 들어가 진행 상황을 볼 수 있게 한다
- Step Out
Shift+F11
- 현재 break에서 호출한 곳으로 이동
- Step into 한 후, 빠져나올 떄 주로 쓴다
- Restart
Ctrl+Shift+F5
- Stop
Shift+F5
BREAKPOINT
conditional breakpoint
- Express condition, Hit Count에 따라 특정 조건을 설정해서 break를 실행
- Express condition
- 설정한 조건 === true 일 때 break;
- 예상한 특정 값이 들어갔을 때, 즉 예상한 어떤 특정 시점에 어떤 call stack이 쌓였는 지, 다른 변수나 객체에는 어떤 값이 담겼는 지 볼 때 유용할 듯
- Hit count 설정
- 특정 hit 반복 후 break;
- 반복문에서 특정 횟수 시행 후, 값을 확인할 때 유용할 듯
- Express condition
inline breakpoint
- 실행이 인라인 중단점과 관련된 열에 도달했을 때만 break
- 한 줄에 여러 개의 문장이 포함된 최소화된 코드를 디버깅할 때 특히 유용
function breakpoint
- 직접 중단점을 설정하는 대신 함수 이름을 중단점으로 설정
- 사용할 수 없는 소스에서 함수 이름을 알고 있을 때 유용
watch
- 자신이 보고 싶은 변수와 표현식을 watch 섹션에서 평가 및 할당할 수 있고, 볼 수 있다
- 현재 breakpoint를 기준으로 평가
- 값을 직접 할당하고 실행하면 할당한 상태로 run
- true / false 를 판단할 수 있는 bool 식을 넣고 판별 가능
call stack
- 스크립트가 함수를 호출하면 인터프리터는 이를 호출 스택에 추가한 다음 함수를 수행
- 해당 함수에 의해 호출되는 모든 함수는 호출 스택에 추가되고 호출이 도달하는 위치에서 실행
- 메인 함수가 끝나면 인터프리터는 스택을 제거하고 메인 코드 목록에서 중단된 실행을 다시 시작
- 스택이 할당된 공간보다 많은 공간을 차지하면 “stack overflow” 에러가 발생
- 프로그램 실행은 stack 쌓인 역순으로 실행
Date:
Tags:
dev