-
NodeJS Debugging카테고리 없음 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 ]