2013-03-17 3 views
6

मुझे जावास्क्रिप्ट त्रुटियों की निगरानी करने और कॉलस्टैक के साथ त्रुटियों को लॉग इन करने में रूचि है।निगरानी जेएस त्रुटियों

मुझे कोशिश-पकड़ ब्लॉक में सबकुछ लपेटने में कोई दिलचस्पी नहीं है।

इस लेख के अनुसार http://blog.errorception.com/2011/12/call-stacks-in-ie.html यह window.onerror अंदर संभव है "रिकर्सिवली ढेर में प्रत्येक कार्य के लिए .caller फोन ढेर में पिछले समारोह को पता है"

मैं callstack पाने की कोशिश की:

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); 
} 

लेकिन केवल एक कदम संभव है, भले ही callstack बहुत लंबे समय तक किया गया था:

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

एक कदम दिलचस्प नहीं है क्योंकि आतंकवादी तर्क मुझे इसके बारे में और भी जानकारी देते हैं।

हां, मैंने ऊपर वर्णित आलेख के अनुसार आईई के साथ कोशिश की।

टिप्पणी: मैंने त्रुटि लॉग को इकट्ठा करने के लिए "त्रुटि" पर खाता खोलने का भी प्रयास किया। मैंने आईई के साथ इसका परीक्षण किया और "त्रुटि" पहचानते हैं कि आईई से त्रुटियां आ रही हैं, लेकिन मुझे वहां मिले लॉग में कोई कॉलस्टैक जानकारी नहीं मिल रही है। , https://github.com/eriwen/javascript-stacktrace

एक, errorception की तरह एक सेवा मैं Muscula पर उपयोग है सिवाय इसके कि यह मुफ़्त है:

+0

आप [stacktrace.js] पर एक नज़र ले सकता है (https://github.com/eriwen/javascript-stacktrace)। यह एक क्रॉस-ब्राउज़र समाधान है। – zeroflagL

उत्तर

1

यहाँ एक नजर डालें।

+0

मैंने इसे देखा है। यह खिड़की के अंदर मेरी मदद नहीं करता है। आतंक। कोशिश करने के अंदर स्टैक प्राप्त करना आसान है, लेकिन जैसा कि मैंने अपने प्रश्न में बताया - मैं कोशिश-पकड़ ब्लॉक में सब कुछ लपेट नहीं सकता। लेकिन आपके प्रयास के लिए धन्यवाद। – Alexander

2

दुर्भाग्यवश यह लॉग हमेशा उपलब्ध नहीं होगा, इसमें लाइन संख्याएं नहीं हैं, आप वास्तव में इस पर भरोसा नहीं कर सकते हैं।

https://qbaka.com

Qbaka स्वचालित रूप से addEventListener, setTimeout, XMLHtppRequest, आदि जैसे जावास्क्रिप्ट कार्यों का गुच्छा ओवरलोड प्रयास करें ताकि कॉलबैक में क्या हो रहा त्रुटियों स्वचालित रूप से कोशिश पकड़ में लपेट कर रहे हैं और आप किसी भी कोड संशोधन के बिना stacktraces मिल जाएगा।

1

आप atatus जो जावास्क्रिप्ट प्रासंगिक त्रुटि ट्रैकिंग प्रदान करता है की कोशिश कर सकते हैं: https://www.atatus.com/

संबंधित मुद्दे