자바스크립트 디버깅

1/22/2023

준비 6. 자바스크립트 디버깅 | 시나브로 자바스크립트 영상에서 우린 왜 console.log() 무덤에 살고 있고, 디버거가 있는데 왜 잘 사용하지 못해왔는지에 대해 설명했는데요.

설명을 조금 보강하려 합니다. 우리가 VSCode 내에서 breakpoint 를 잡으려면 별도의 세팅이 필요하다고 영상에서 말씀드렸는데요.

예를 들어, node abc.js 와 같은 명령을 실행할 때, --inspect 라는 파라메터를 붙여서 node --inspect abc.js 와 같이 실행하면, 디버깅을 할 수 있도록 별도의 포트를 열어주거든요. 그러면 그 포트를 통해 node 프로세스에게 디버깅 관련해서 통신할 수 있게 되는거죠. “여기 breakpoint 잡아줘. 지금 breakpoint 에 걸려있는데, 이 변수의 값은 뭐야?” 이런 것들.

그래서 이 영상에서 vite dev 를 실행해서 개발을 하고 있었지만, 여기에도 마찬가지로 --inspect 파라메터를 넘겨줘야 하는 상황이에요. 사실 vite devnode node_modules/.bin/vite dev 와 마찬가지인데요. 그렇다는 건 node --inspect node_modules/.bin/vite dev 를 실행하면 디버깅 모드가 된다는 뜻이겠죠. https://github.com/vitejs/vite/discussions/4065

우리가 Chrome 에 Source 탭에서 디버깅 하듯이 VSCode 에서도 그렇게 하려면 VSCode 에게 “지금 저 프로세스가 xxx 포트로 디버깅 기능을 열었으니까, 거기에 붙어” 라고 설정을 해줘야 하는데 그게 바로 launch.json 설정이에요. https://code.visualstudio.com/docs/editor/debugging

하지만 영상에서도 말했듯이, 너무나 많은 변수에 의해 이게 작동하지 않거나, 아니면 작동하는 것 같아 보이는데 막상 breakpoint 가 제대로 안먹히는 일들이 많아요. 그래도, 적어도 Source Map 이 제공되는 환경에서 브라우저를 통해 디버깅을 해보는 건 잘 될 확률이 높으니 지금은 그 쪽으로 더 시도를 해보시길 권해드립니다 (제가 영상에서 보여드린 버전).

최근 vite 환경에서는 세팅을 해보지 않은 관계로, 언제 한번 세팅을 성공하는대로 또 공유를 드리겠습니다.


시나브로 자바스크립트는, 이유를 모르고 사용해 오던 굵직한 주제들에 대해 깊이 있게 설명해주는 강좌입니다. 자바스크립트 생태계의 구성 요소를 이해하고, 프레임워크 없이 바닥부터 다양한 토픽을 구현해보면서 이해도를 높이고, 어떤 프레임워크든 쉽게 이해할 수 있는 기반과 자신감을 다져주는 것을 목표로 합니다.