Node.js 응용 프로그램을 디버깅하려면 어떻게 해야 하나요?
Node.js 서버 애플리케이션을 디버깅하려면 어떻게 해야 하나요?
현재 저는 주로 다음과 같은 인쇄 문장과 함께 경보 디버깅을 사용하고 있습니다.
sys.puts(sys.inspect(someVariable));
더 나은 디버깅 방법이 있을 겁니다.Google Chrome에 명령줄 디버거가 있다는 것을 알고 있습니다.이 디버거는 Node.js에서도 사용할 수 있습니까?
노드 교환으로 위기를 모면할 수 있습니다!WebSocket을 지원하는 모든 브라우저에서 사용할 수 있습니다.중단점, 프로파일러, 라이브 코딩 등...정말 멋져요.
설치 방법:
npm install -g node-inspector
그런 다음 실행합니다.
node-debug app.js
디버깅
프로파일링
node --prof ./app.js
node --prof-process ./the-generated-log-file
히프덤프
플레임그래프
- 0x
- jam3/devtool, Chrome 개발자 도구 Flame 차트
- Dtrace 및 StackVis - 스마트에서만 지원OS
- 클리닉
트레이스
로깅
디버깅 정보를 출력하는 라이브러리
스택 트레이스 정보를 강화하는 라이브러리
벤치마킹
다른.
레거시
이러한 기능은 작동하지만 더 이상 유지 보수되지 않거나 최신 노드 버전에 적용되지 않습니다.
- https://github.com/bnoordhuis/node-profiler - 내장 디버깅으로 대체
- https://github.com/c4milo/node-webkit-agent - 노드인스펙터로 대체
- https://nodetime.com/ - 폐지
Google Chrome Developer Tools의 일부로 출시된 V8 디버거를 사용하여 Node.js 스크립트를 디버깅할 수 있습니다.이 동작의 상세한 것에 대하여는, Node.js GitHub Wiki 를 참조해 주세요.
노드에는 버전 6.3 이후 GUI 디버거가 내장되어 있습니다(Chrome의 DevTools 사용).
인스펙터 플래그를 전달하기만 하면 인스펙터에게 URL이 제공됩니다.
node --inspect server.js
에 '어느 정도'를 도 있어요.--inspect-brk
★★★★★★ 。
Node.js 버전 0.3.4+에는 디버깅 지원이 포함되어 있습니다.
node debug script.js
매뉴얼: http://nodejs.org/api/debugger.html
디버깅에는 Visual Studio Code를 선택합니다.툴의 설치와 관련된 오버헤드가 없습니다.npm install
앱의 시작점을 패키지로 설정하기만 하면 됩니다.json 및 VSCode는 솔루션 내부에 구성 파일을 자동으로 생성합니다.이것은 Atom과 같은 편집기가 만들어지는 Electron을 기반으로 합니다.
VS 코드는 VS, Eclipse 등의 다른 IDE에서와 유사한 디버깅 환경을 제공합니다.
JetBrains WebStorm은 프런트엔드와 백엔드 JavaScript에 적합한 유일한 JavaScript IDE이기 때문에 개인적으로 사용하고 있습니다.
여러 OS에서 동작하며 Node.js 디버깅이 내장되어 있습니다(다른 많은 것들도 마찬가지입니다).
나의 유일한 '문제'/위시리스트 항목은 다음과 같습니다.
Mac에서는 Windows보다리소스가 더많이 필요한 것같습니다.버전 6에서는 더 이상 문제가 되지 않는 것같습니다.Sublime Text 2와 같이 스니펫을 지원하면 좋을 것 같습니다. 즉, 'fun'을 입력하고 'tab'을 탭하여 기능을 넣을 수 있습니다.아래의 @WickyNilliams 코멘트를 참조해 주세요.라이브 템플릿을 사용하면 스니펫도 지원됩니다.
여기에는 훌륭한 답변이 많이 있습니다만, 제 견해를 덧붙이고 싶습니다(제 접근 방식이 어떻게 발전했는지에 따라).
디버깅 로그
좋은 것을 합니다.console.log('Uh oh, if you reached here, you better run.')
또, 이 기능이 유효하게 되는 경우도 있습니다.따라서 너무 멀리 떨어져 있는 경우는 Visionmedia의 디버깅을 사용하여 로그에 블링(bling)을 추가합니다.
대화형 디버깅
콘솔 로깅이 가능한 한 편리하기 때문에 전문적으로 디버깅하려면 소매를 걷어붙이고 작업을 진행해야 합니다.중단점을 설정하고 코드를 살펴보고 범위와 변수를 검사하여 이상한 동작의 원인을 확인합니다.다른 사람들이 언급했듯이 노드 검사기는 실제로 벌무릎입니다.기본 제공 디버거로 할 수 있는 모든 작업을 수행하지만 익숙한 Chrome DevTools 인터페이스를 사용합니다.저처럼 웹스톰을 사용하는 경우 여기에서 디버깅을 할 수 있는 편리한 가이드가 있습니다.
스택 트레이스
기본적으로는 이벤트 루프(틱)의 서로 다른 사이클에 걸쳐 일련의 작업을 추적할 수 없습니다.이 문제를 해결하려면 longjohn을 살펴보세요(그러나 생산은 아닙니다!).
메모리 리크
Node.js를 사용하면 서버 프로세스를 장시간 가동시킬 수 있습니다.만약 당신이 그것이 심각한 누출을 일으켰다고 생각한다면 어떻게 해야 합니까?heapdump 및 Chrome DevTools를 사용하여 일부 스냅샷을 비교하고 변경 사항을 확인하십시오.
도움이 되는 기사는 이쪽에서 확인하세요.
비디오를 보고 싶은 경우는,
- Netflix JS Talks - 프로덕션에서 Node.js 디버깅
- 트레이스 및 디버깅node.js에 관한 트레이스 작업 그룹의 흥미로운 비디오.
- 노드 인스펙터에 관한 매우 유익한 15분 분량의 비디오
어떤 경로를 선택하든 디버깅 방법을 이해해야 합니다.
은 괴로운 일이다
의 것
것아약스 주
Thesus는 오픈 소스 에디터 브래킷에서 Node.js 코드를 디버깅할 수 있는 Adobe 리서치의 프로젝트입니다.실시간 코드 커버리지, 소급 검사, 비동기 콜트리 등 몇 가지 흥미로운 기능을 갖추고 있습니다.
Node.js Visual Studio 2012 또는 2013용 도구에는 디버거가 포함되어 있습니다.개요에는 "Node.js Tools for Visual Studio는 노드 앱 디버깅을 완벽하게 지원합니다."라고 나와 있습니다.Node.js는 처음이지만 배경이 있다.NET, 이 추가 기능은 Node.js 응용 프로그램을 디버깅하는 데 매우 유용한 방법입니다.
Visual Studio Code는 Node.js 디버깅을 매우 잘 지원합니다.무료 오픈 소스 및 크로스 플랫폼이며 Linux, OS X 및 Windows에서 실행됩니다.
필요한 경우 grunt 작업이나 guff 작업도 디버깅할 수 있습니다.
안정적이고 매우 간단한 Node.js 코드를 디버깅하기 위해 다른 방법을 썼습니다.https://github.com/s-a/iron-node 에서 구할 수 있습니다.
오픈소스 크로스 플랫폼 비주얼 디버거입니다.
설치:
npm install iron-node -g;
디버깅:
iron-node yourscript.js;
ATOM IDE 를 사용하고 있는 경우는,node-debugger
★★★★★★★★★★★★★★★★★★.
Chrome 버전67.0.3396.62(+) 사용
- 노드 앱 실행
노드 --node-brk=0.0.0:9229 server.server(server js filename)
- 예를 들어, Chrome에서 앱을 탐색합니다."localhost: 포트"
- DevTools를 엽니다.
- 응답 디바이스 아이콘 옆에 있는 노드아이콘을 클릭합니다.
노드 앱을 디버깅하기 위한 다른 DevTools 창이 나타납니다.
당신을 도울 수 있는 pry.js라는 깔끔한 도구를 만들었습니다.
코드 어딘가에 간단한 문을 삽입하고 스크립트를 정상적으로 실행하면 노드가 현재 스레드를 중지하여 모든 변수와 함수에 액세스할 수 있습니다.보기/편집/삭제 자유자재로!
var pry = require('pryjs')
class FizzBuzz
run: ->
for i in [1..100]
output = ''
eval(pry.it) // magic
output += "Fizz" if i % 3 is 0
output += "Buzz" if i % 5 is 0
console.log output || i
bar: ->
10
fizz = new FizzBuzz()
fizz.run()
Node.js에는 명령줄 디버거 클라이언트가 내장되어 있습니다.Cloud 9 IDE에는 꽤 좋은 (시각적인) 디버거도 있습니다.
어디서부터 시작해야 할지 모르는 사용자를 위해 노드 검사기 사용에 대한 짧은 Node.js 디버깅 입문서를 작성했습니다.
Visual Studio Code는 디버깅에 도움이 됩니다.
웹스톰을 사용하세요!Node.js 어플리케이션 디버깅에 매우 적합합니다.디버거가 내장되어 있습니다.다음 문서를 참조하십시오.https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
Node.js용 강력한 로깅라이브러리가 필요한 경우 Tracer https://github.com/baryon/tracer 를 선택하는 것이 좋습니다.
타임스탬프, 파일명, 메서드명, 회선번호, 패스 또는 콜스택을 포함한 로그메시지를 출력하고 컬러 콘솔을 지원하며 데이터베이스, 파일, 스트림 전송을 쉽게 지원합니다.나는 작가다.
컴퓨터에 노드 인스펙터가 설치되어 있는 경우(그렇지 않은 경우 'npm install -g node-inspector'를 입력하기만 하면 됩니다) 다음을 실행해야 합니다.
node-inspector & node --debug-brk scriptFileName.js
명령줄에서 WebKit(Chrome/Safari) 브라우저에 URI를 붙여넣습니다.
완전성을 위해:
PyCharm 3.0 + Node.js 플러그인은 놀라운 개발 + 실행 + 디버깅 경험을 제공합니다.
--inspect 플래그를 사용하여 노드 프로세스를 시작합니다.
node --inspect index.js
다음으로 열기chrome://inspect
크롬으로 되어 있습니다."노드 전용 DevTools 열기" 링크를 클릭하거나 Chrome DevTools를 쉽게 열려면 이 Chrome 확장을 설치하십시오.
자세한 내용은 이 링크를 참조하십시오.
여러 가지 가능성이 있다...
디버그 지원은 종종 v8 디버깅 프로토콜 또는 최신 Chrome 디버깅 프로토콜을 사용하여 구현됩니다.
새로운 오픈 소스 Nodeclipse 프로젝트(Eclipse 플러그인 또는 Enide Studio)가 있습니다.
Nodeclipse는 2013년 Eclipse Top 10 New Plugins에서 1위를 차지했습니다.수정된 V8 디버거(Google Chrome Developer Tools for Java)를 사용합니다.
노드클립스는 매월 초에 출시되는 무료 오픈소스 소프트웨어다.
IntelliJ는 Node.js에 매우 적합합니다.
또, 인텔리J는 「코드 어시스턴스」를 서포트하고 있습니다.
NetBeans IDE는 버전 8.1부터 Node.js를 지원하고 있습니다.
<...>
신기능의 특징
Node.js 응용 프로그램 개발
- New Node.js 프로젝트 마법사
- New Node.js Express 마법사
- 향상된 JavaScript 편집기
- Node.js 응용 프로그램 실행에 대한 새로운 지원
- Node.js 응용 프로그램의 디버깅이 새롭게 지원되었습니다.
<...>
기타 참고 자료:
- NetBeans Wiki / New And Noteworthy NB81 。
- NetBeans IDE, Geertjan-Oracle의 Node.js Express App.
이 명령어 사용
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
ndb는 Node.js의 개선된 디버깅 환경이며 Chrome DevTools를 통해 사용 가능
https://github.com/GoogleChromeLabs/ndb
node-debug -p 8888 scriptFileName.js
언급URL : https://stackoverflow.com/questions/1911015/how-do-i-debug-node-js-applications
'sourcecode' 카테고리의 다른 글
날짜를 지정하면 요일을 어떻게 알 수 있나요? (0) | 2022.09.18 |
---|---|
Python SQL 다른 테이블에서 일치하지 않는 항목을 찾는 방법 (0) | 2022.09.18 |
fprintf, printf, sprintf의 차이? (0) | 2022.09.18 |
PHP에서 유용한 오류 메시지를 얻으려면 어떻게 해야 합니까? (0) | 2022.09.18 |
데이터 프레임을 피벗하려면 어떻게 해야 합니까? (0) | 2022.09.18 |