java를 쓸 때나 nodejs를 쓸 때나 console 창에 아래와 같은 에러가 발생하면 제대로 관심을 가지고 읽어보지 않을 때가 많았었다.. (과거를 반성..)
한 번 읽고 보니 친절하게 내가 어디까지 작업했는지, 어디서 에러가 났는지를 설명해주고 있다.
위의 에러를 예로 스택추적을 해보자.
먼저 우리가 아는 스택은 후입선출 (LIFO - Last In First Out)의 구조로 이루어져 있다.
그림을 예로 우리가 파일을 실행하고 C함수에서 에러가 발생하게 되면 C가 실행되기 전까지의 순서를 친절하게 알려줍니다 그게 바로 맨 위에 콘솔 이미지입니다.
이미지를 하나씩 해석하면
1. rawDataRepository.js 익명함수가 실행되었다.
2. KeeperResponse.deserializeBinary 함수가 실행되었다.
3. KeeperResponse.deserializeBinaryFromReader 함수가 실행되었다,
4. jspb.BinaryReader.readInt32 decode된 데이터를 int로 읽고 있다.
5. Object.goog.asserts.assert 데이터를 확인
6. Object.goog.asserts.doAssertFailure_ 데이터 확인 실패
7. new goog.asserts.AssertionError asserts.AssertionError발생
이런 순서로 읽게 된다.
콘솔창에 나중에 실행된 함수가 먼저 출력되는 이유는 바로 위 그림에 소방관을 예로 들면
우리 코드에 에러가 난 부분을 화재가 났다고 했을 때 소방관이 맨 위에 사람(함수)부터 구출해서 이름 명단을 작성했기 때문이라고 생각하니 쉬웠다.
'node.js' 카테고리의 다른 글
[Node.js] grpc 통신 WebSocket POST Request 방법 (0) | 2022.03.08 |
---|---|
[node.js] node 최신 버전 업그레이드 및 버전 변경 (nvm) (0) | 2021.12.31 |
[Node.js] Node js + TypeScrpt + ESLint(airbnb) + Prettier 적용 (2) | 2021.07.08 |
[Node.js] Node.js Socket 통신 404 errer (0) | 2021.06.25 |
(node.js + React) + Socket.io 간단한 연결 구현 (+ TypeScript) (0) | 2021.06.25 |