[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;
      • 반복문에서 특정 횟수 시행 후, 값을 확인할 때 유용할 듯

inline breakpoint

  • 실행이 인라인 중단점과 관련된 열에 도달했을 때만 break
  • 한 줄에 여러 개의 문장이 포함된 최소화된 코드를 디버깅할 때 특히 유용

function breakpoint

  • 직접 중단점을 설정하는 대신 함수 이름을 중단점으로 설정
  • 사용할 수 없는 소스에서 함수 이름을 알고 있을 때 유용

watch

  • 자신이 보고 싶은 변수와 표현식을 watch 섹션에서 평가 및 할당할 수 있고, 볼 수 있다
  • 현재 breakpoint를 기준으로 평가
  • 값을 직접 할당하고 실행하면 할당한 상태로 run
  • true / false 를 판단할 수 있는 bool 식을 넣고 판별 가능

call stack

  • 스크립트가 함수를 호출하면 인터프리터는 이를 호출 스택에 추가한 다음 함수를 수행
  • 해당 함수에 의해 호출되는 모든 함수는 호출 스택에 추가되고 호출이 도달하는 위치에서 실행
  • 메인 함수가 끝나면 인터프리터는 스택을 제거하고 메인 코드 목록에서 중단된 실행을 다시 시작
  • 스택이 할당된 공간보다 많은 공간을 차지하면 “stack overflow” 에러가 발생
  • 프로그램 실행은 stack 쌓인 역순으로 실행
 Date: 
 Tags:  dev