2013-03-17 13 views
6

Ich bin daran interessiert, Javascript-Fehler zu überwachen und die Fehler mit dem Callstack zu protokollieren.Überwachung js Fehler

Ich bin nicht daran interessiert, alles in try-catch-Blöcke zu wickeln.

Laut diesem Artikel http://blog.errorception.com/2011/12/call-stacks-in-ie.html ist es möglich, innerhalb window.onerror „ruft rekursiv für jede Funktion in dem Stapel .caller die vorherige Funktion in dem Stapel wissen“

ich die Aufrufliste zu bekommen versucht:

window.onerror = function(errorMsg, url, lineNumber) 
{ 
    var stk = [], clr = arguments.callee.caller; 
    while(clr) 
    { 
     stk.push("" + clr); 
     clr = clr.caller; 
    } 
    // Logging stk 
    send_callstack_to_log(stk); 
} 

aber nur ein Schritt ist möglich, auch wenn die Aufrufliste viel länger war:

(function() 
{ 
function inside() {it.will.be.exception;}; 
function middle() {inside()}; 
function outside() {middle()} 
outside(); 
})(); 

Ein Schritt ist nicht interessant, weil on-argument-Argumente mir noch mehr Informationen darüber geben.

Ja, ich habe es mit IE nach dem oben genannten Artikel versucht.

Bemerkung: Ich habe auch versucht, ein Konto auf "ERRORCAEPTION" zu öffnen, um Fehlerprotokoll zu sammeln. Ich habe es mit IE getestet und "ERRORCAEPTION" erkennen, dass die Fehler von IE kommen, aber ich kann keine Callstack-Informationen in dem Protokoll finden, das ich dort habe.

+0

Sie einen Blick darauf werfen könnte bei [stacktrace.js] (https://github.com/eriwen/javascript-stacktrace). Es ist eine browserübergreifende Lösung. – zeroflagL

Antwort

1

einen Blick hier nehmen: https://github.com/eriwen/javascript-stacktrace

Das ist der, den ich auf Muscula verwenden ist, ein Dienst wie errorception, außer es ist kostenlos.

+0

Ich habe dieses gesehen. Es hilft mir nicht in window.onerror. Innerhalb von try-catch ist es einfach, den Stack zu bekommen, aber wie ich in meiner Frage gesagt habe - ich kann nicht alles in try-catch-Blöcke verpacken. Aber danke für deine Mühe. – Alexander

2

Leider ist dieses Protokoll nicht immer verfügbar, es fehlen Zeilennummern, auf die Sie sich nicht wirklich verlassen können.

Versuchen https://qbaka.com

Qbaka Überlastung Bündel von Funktionen automatisch JavaScript wie addEventListener, setTimeout, XMLHtppRequest, etc, so dass Fehler in Rückrufe passiert sind automatisch mit try-catch gewickelt und Sie werden stacktraces ohne Code-Änderung zu erhalten.