node.js 스택 오류에 10개 이상의 행이 있습니까?
node.js 스택 오류 하나에 10개 이상의 라인을 얻을 수 있는 방법이 있습니까?
function a() { dieInHell(); }
function b() { a(); }
function c() { b(); }
function d() { c(); }
function e() { d(); }
function f() { e(); }
function g() { f(); }
function h() { g(); }
function i() { h(); }
function j() { i(); }
function k() { j(); }
function l() { k(); }
function m() { l(); }
function n() { m(); }
function o() { n(); }
function p() { o(); }
function q() { p(); }
try {
q();
}
catch(e) {
console.log(e.stack);
}
다음을 보여줍니다.
$ node debug.js
ReferenceError: dieInHell is not defined
at a (/Users/julien/tmp/debug.js:2:5)
at b (/Users/julien/tmp/debug.js:6:5)
at c (/Users/julien/tmp/debug.js:10:5)
at d (/Users/julien/tmp/debug.js:14:5)
at e (/Users/julien/tmp/debug.js:18:5)
at f (/Users/julien/tmp/debug.js:22:5)
at g (/Users/julien/tmp/debug.js:26:5)
at h (/Users/julien/tmp/debug.js:30:5)
at i (/Users/julien/tmp/debug.js:34:5)
at j (/Users/julien/tmp/debug.js:38:5)
10통 이상의 전화를 받을 수 있는 방법이 있습니까?
이를 위한 가장 쉬운 해결책은 다음과 같이 코드를 시작하는 것입니다.
Error.stackTraceLimit = Infinity;
setTimeout/set에 걸쳐 있는 스택 추적을 보려면인터벌 콜, 그러면 더 정교한 https://github.com/mattinsler/longjohn 이 선택의 방법이 될 것입니다.
스택 추적 제한을 명령줄 매개 변수로 전달할 수 있습니다.node:
node --stack-trace-limit=1000 debug.js// 디폴트 10
그건 그렇고, 발생할 것 같지는 않지만 디버깅을 위해 몇 시간의 시간을 낭비한 또 다른 것은 스택 크기(기본값은 492kB)입니다.스택이 모두 소진된 경우 매우 유익하지 않은 오류가 발생할 수 있습니다.RangeError별도의 정보 없이)스택 크기를 늘릴 수 있는 방법은 다음과 같습니다.
node --stack-size=1024 debug.js// 디폴트 492
콜-투-콜-투-콜 체인 방식의 세계에서는 실제로 큰 입력 크기의 스택 크기를 초과하는 것이 매우 쉽습니다. 프로그램을 작성하지 않은 경우에도 마찬가지입니다.
모든 스택 관련 옵션을 보려면 다음을(를)
node --v8-options | grep -B0 -A1 stack
추적 제한을 설정할 수 있습니다.NODE_OPTIONS변수:
$ NODE_OPTIONS=--stack-trace-limit=100 node debug.js
ReferenceError: dieInHell is not defined
at a (/tmp/debug.js:1:16)
at b (/tmp/debug.js:2:16)
at c (/tmp/debug.js:3:16)
at d (/tmp/debug.js:4:16)
at e (/tmp/debug.js:5:16)
at f (/tmp/debug.js:6:16)
at g (/tmp/debug.js:7:16)
at h (/tmp/debug.js:8:16)
at i (/tmp/debug.js:9:16)
at j (/tmp/debug.js:10:16)
at k (/tmp/debug.js:11:16)
at l (/tmp/debug.js:12:16)
at m (/tmp/debug.js:13:16)
at n (/tmp/debug.js:14:16)
at o (/tmp/debug.js:15:16)
at p (/tmp/debug.js:16:16)
at q (/tmp/debug.js:17:16)
at Object.<anonymous> (/tmp/debug.js:20:5)
at Module._compile (node:internal/modules/cjs/loader:1108:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)
at Module.load (node:internal/modules/cjs/loader:973:32)
at Function.Module._load (node:internal/modules/cjs/loader:813:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
at node:internal/main/run_main_module:17:47
https://github.com/tlrobinson/long-stack-traces 모듈을 사용합니다.
또한 익숙한 Google Chrome의 dev-tools 디버거를 여는 내장 디버거를 사용할 수 있습니다.오류가 발생하면 중지되며 전체 스택을 탐색할 수 있습니다.그냥 실행:
$ node --inspect debug.js
Debugger listening on port 9229.
To start debugging, open the following URL in Chrome: chrome-devtools://devtools/remote/serve_file/...
언급URL : https://stackoverflow.com/questions/7697038/more-than-10-lines-in-a-node-js-stack-error
'programing' 카테고리의 다른 글
| GDB: 일반 포인터의 참조 해제 시도 (0) | 2023.09.26 |
|---|---|
| ADO.NET - Size 속성의 크기가 0입니다. (0) | 2023.09.21 |
| PHP AJAX 12017 헤더 호출 시 오류(위치:) (0) | 2023.09.21 |
| 하나의 쿼리(MySQL)에서 여러 조건에 대한 다중 COUNT() (0) | 2023.09.21 |
| C/C++에서 두 개의 '주요' (0) | 2023.09.21 |