자바 스크립트 예외 스택 추적


89

Firefox에서는 .NET을 사용하여 예외의 스택 추적을 얻을 수 있습니다 exception.stack.

다른 브라우저에서도 얻을 수있는 방법이 있습니까?

편집 : 실제로 스택 추적을 자동으로 저장하고 (가능하면) 그 때 디버깅하지 않으려 고합니다 (예 : 디버거에서 스택 추적을 얻는 방법을 알고 있습니다).

답변:


73

스택 추적을 인쇄하려는 위치에 다음 행을 배치하십시오.

console.log(new Error().stack);

참고 : Chrome 24Firefox 18 에서 내가 테스트했습니다.

이 도구 도 살펴볼 가치가 있습니다.


2
Sweet-나는 onerror의 조합을 사용하여 줄 번호를 얻은 다음 사용자에게 스택 트레이스를 다시 경고하는 try catch 및 제안으로 문제가되는 줄을 래핑합니다. `window.onerror = function (message, url, lineNumber) {alert ( 'message :'+ message + '-url :'+ url + '-ln :'+ lineNumber); true를 반환하십시오. }; `그런 다음 포장하여 스택 트레이스를 인쇄합니다. `try {// 예외를 일으키는 일부 코드. } catch (e) {alert (new Error (). stack); }`
Philip Murphy

어떻게 든 죽으면 스택의 첫 번째 줄만 제공합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?? 즉 : function foo () {fdasmkl} try {foo ()} catch (e) {err = new Error (e) .stack; console.log (err)} = >>> Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7대신"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui

신경 쓰지 마세요, 문제를 발견했습니다. 이미 오류 function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }
였으므로


2

문자열 스택 추적을 원하면 insin의 대답 인 stacktrace.js를 사용 합니다. 실제로 stacktrace.js를 사용 하는 stacktrace (줄 번호, 파일 이름 등)의 조각에 액세스하려는 경우 stackinfo .


0

적어도 쉽지는 않습니다.

IE에서는 MS Script Debugger (어떤 이유로 Office 구성 요소) 또는 Visual Studio를 사용하여 브라우저 프로세스를 디버깅 할 수 있으며 중단 점에서 스택을 볼 수 있습니다.


0

모든 주요 브라우저에서 처리되지 않은 JavaScript 예외에 대한 스택 추적을 생성하려는 좋은 오픈 소스 라이브러리 TraceKit 을 시도해야합니다. Tracekit에 대해 자세히 읽을 수 있습니다.

https://github.com/csnover/TraceKit/

PS : 당신은 좋은 UI와 (Tracekit 사용) 서비스를 찾고 있다면, 당신은 시도 할 수 Atatus을

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.