카테고리 없음

NodeJS Debugging

Surge100 2022. 8. 2. 15:58

Debugging

디버깅에서 가장 중요한 것은 문제를 정의하(defining the problem)는 것이다. 어떤 문제 인지 어떤 버그인지 어떤 오류인지 이런 문제를 잘 정의해야지 그에 맞는 솔루션을 찾을 수 있다.

 

 

현재 실제 상황과 예상 혹은 원하는 상황의 차이에서 발생하는 gap을  Debugging뿐만 아니라

  • unit testing
  • integration testing
  • control flow analysis
  • log file analysis/print logs

등을 할 수도 있다. 

 

interactive debugging 

동작하는 프로그램 즉 소스코드 안에서 실시간으로 값을 확인하고, 또는 실시간으로 값을 변경해서 상태를 확인 할 수 있다.

 

덧붙여

  • memory dumps profiling : 성능을 분석하는데 유용한 메모리를 분석하고, 여러가지 상태의 profiling을 할 수 있는 것 도 존재한다.

debugging이나 log를 출력하는 것만이 문제해결 수단은 아니다. 어떤 걸 원하느냐에 따라 적절한 도구를 골라서 문제상황과 원하는 결과의 gap을 줄여나가야 하다.

 

 

step over

다음 break point로 넘어가는 것이 아니라 코드 한줄씩 진행하면서 출력 결과를 확인할 수 있는 버튼이다. 대신에 이 버튼은

함수안에서 다름 함수를 호출하고 있는 경우에는 다른 함수 안까지는 들어가지 않고 함수를 호출하고 그 결과를 받아서 다음 중에 있는 코드로 넘어간다.

 

step into

함수의 함수 안까지 들어가서, 한줄 씩 코드를 실행하면서 결과를 출력한다.

 

step out

step into를 통해서 함수의 함수 안까지 들어간 경우 안쪽 함수를 빠져나 올 수 있게 해준다.


Closure

지금 debugging을 하고 있는 함수와 어떤 다른 외부의 함수가 어떻게 연관이 되어 있는지 알려준다.

 

Global 

global 객체는 어떤 것들이 있는지 확인해 볼 수 있다.

 


Variables

보통은 내가 debugging하고 있는 현재 함수의 변수들의 값에 대해 확인 할 수 있고

 

Watch

우리가 좀더 관심있는 지켜보고 싶은 그런 변수나 logic이 있다면, Watch에서 작성해서 지켜 볼 수 있다.

 

Call Stack

해당 함수가 실행되기 전까지 어떤 순서대로 어떻게해서 해당 함수가 실행되었는지 확인 할 수 있다.

 

Loaded Scripts

어떤 script가 함께 loading되었는지도 확인해 볼 수 있다.

 

Break Point

그리고 여태까지 걸어 놓았던 break point들을 확인 할 수 있다. 잠시 비활성화 시켜 놓을 수도 있다.

 

 

[출처 -https://academy.dream-coding.com/courses/node ]