Śledzenie stosu wyjątków JavaScript


89

W przeglądarce Firefox mogę uzyskać ślad stosu wyjątku za pomocą exception.stack.

Czy jest sposób, aby uzyskać to w innych przeglądarkach?

Edycja: Właściwie chcę automatycznie zapisać ślad stosu (jeśli to możliwe) i nie debugować go w tym czasie (tj. Wiem, jak uzyskać ślad stosu w debugerze).

Odpowiedzi:


74

Umieść ten wiersz w miejscu, w którym chcesz wydrukować ślad stosu:

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

Uwaga: przetestowane przeze mnie na Chrome 24 i Firefox 18

Warto też przyjrzeć się temu narzędziu .


2
Świetnie - używam kombinacji onerror, aby uzyskać numer linii, a następnie zawijam nieprawidłową linię za pomocą try catch i twoją sugestią, aby zaalarmować użytkownika o śledzeniu stosu. `window.onerror = function (message, url, lineNumber) {alert ('message:' + message + '- url:' + url + '- ln:' + lineNumber); powrót prawda; }; `Następnie zawiń go, aby wydrukować ślad stosu. `try {// Jakiś kod powodujący wyjątek. } catch (e) {alert (nowy Error (). stos); } `
Philip Murphy

jakoś umiera, daje mi tylko pierwszą linię stosu. Co ja robię źle?? tj .: function foo () {fdasmkl} try {foo ()} catch (e) {err = new Error (e) .stack; console.log (err)} = >>> Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7zamiast"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui

nieważne, znalazłem problem. Ponieważ to już był błąd, mogę zrobić: function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }natychmiast
chitzui


2

Jeśli chcesz śledzić stos ciągów, skorzystam z odpowiedzi insin : stacktrace.js . Jeśli chcesz uzyskać dostęp do elementów ścieżki stosu (numery linii, nazwy plików itp.), Stackinfo , które faktycznie używa stacktrace.js pod maską.


0

Nie bardzo, a przynajmniej niełatwo.

W IE możesz debugować proces przeglądarki za pomocą MS Script Debugger (który z jakiegoś powodu jest składnikiem Office) lub Visual Studio, a następnie możesz zobaczyć stos w punktach przerwania.


0

Musisz wypróbować dobrą bibliotekę open source TraceKit, która próbuje tworzyć ślady stosu dla nieobsługiwanych wyjątków JavaScript we wszystkich głównych przeglądarkach. Możesz przeczytać więcej o Tracekit

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

PS : Jeśli szukasz usługi (używając Tracekit) z dobrym interfejsem użytkownika, możesz wypróbować Atatusa

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.