जावास्क्रिप्ट अपवाद स्टैक ट्रेस


89

फ़ायरफ़ॉक्स में मैं का उपयोग करके एक अपवाद का स्टैक ट्रेस प्राप्त कर सकते हैं exception.stack

वहाँ एक तरीका है कि अन्य ब्राउज़रों में भी है?

संपादित करें: मैं वास्तव में स्टैक ट्रेस को स्वचालित रूप से सहेजना चाहता हूं (यदि संभव हो) और उस समय डिबग न करें (यानी मुझे पता है कि स्टैक ट्रेस को डिबगर में कैसे लाया जाए)।

जवाबों:


73

इस पंक्ति को उस स्थान पर रखें जहाँ आप स्टैक ट्रेस मुद्रित करना चाहते हैं:

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

नोट: मेरे द्वारा क्रोम 24 और फ़ायरफ़ॉक्स 18 पर परीक्षण किया गया

इस उपकरण पर एक नज़र डालने के लायक हो सकता है ।


2
स्वीट - मैं लाइन नंबर प्राप्त करने के लिए ऑनरोर के संयोजन का उपयोग करता हूं और फिर एक कोशिश के साथ आक्रामक लाइन को लपेटता हूं और उपयोगकर्ता को स्टैकट्रेस को वापस अलर्ट करने के लिए आपका सुझाव। `window.onerror = function (संदेश, url, लाइननंबर) {अलर्ट ('संदेश:' + संदेश + '- url:' + url + '- ln:' + lineNumber); सच लौटना; }; `फिर इसे स्टैच्रेस प्रिंट करने के लिए लपेटें। `कोशिश {// कुछ कोड जो अपवाद पैदा कर रहे हैं। } कैच (ई) {अलर्ट (नई त्रुटि) (स्टैक); } `
फिलिप मर्फी

किसी तरह मर जाता है केवल मुझे ढेर की पहली पंक्ति देता है। मैं क्या गलत कर रहा हूं?? अर्थात: फ़ंक्शन फू () {fdasmkl} कोशिश {foo ()} कैच (ई) {इर = नया = (ई) .स्टैक; कंसोल.लॉग (ग़लती से)} = >>> के 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"
चिट्ज़ुई

कोई बात नहीं, मुद्दा मिल गया। चूंकि यह पहले से ही एक त्रुटि थी, मैं यह कर सकता हूं: function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }तुरंत
11

23

वेबकिट में अब कार्यक्षमता है जो स्टैक के निशान प्रदान करती है:

वेब इंस्पेक्टर: अंडरस्टैंडिंग स्टैक ट्रैसेस , यूरी सेमिकहात्स्की द्वारा बुधवार, 20 अप्रैल, 2011 को सुबह 7:32 पर पोस्ट किया गया (webkit.org)

उस पोस्ट से:


1
केवल इसके स्टैक को देखने के लिए एक अपवाद बनाने की तुलना में बहुत अधिक सुविधाजनक है।
एलेक्स चर्चिल

लिंक टूट गया है, लेकिन मुझे लगता है कि यहाँ एक प्रति है pjh0718.blogspot.com/2016/02/…
स्टीफन टर्नर

2

यदि आप स्ट्रिंग स्टैक ट्रेस चाहते हैं, तो मैं इनसिन के उत्तर के साथ जाऊंगा: stacktrace.js । यदि आप स्टैकट्रेस (लाइन नंबर, फ़ाइल नाम, आदि) के टुकड़े का उपयोग करना चाहते हैं, तो स्टैकिनफो , जो वास्तव में हूड के नीचे स्टैकट्रेस.जेएस का उपयोग करता है।


0

वास्तव में नहीं, कम से कम आसानी से तो नहीं।

IE में, आप MS स्क्रिप्ट डीबगर (जो किसी कारण से एक कार्यालय घटक है) या विज़ुअल स्टूडियो के साथ ब्राउज़र प्रक्रिया को डीबग कर सकते हैं, और फिर आप ब्रेकपॉइंट पर स्टैक देख सकते हैं।


0

आपको अच्छे ओपन सोर्स लाइब्रेरी ट्रेसकिट की कोशिश करनी चाहिए जो सभी प्रमुख ब्राउज़रों में अनचाहे जावास्क्रिप्ट अपवादों के लिए स्टैक निशान बनाने का प्रयास करता है। आप ट्रेसेकिट के बारे में अधिक पढ़ सकते हैं

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

PS : यदि आप अच्छे UI के साथ एक सेवा (Tracekit का उपयोग करके) की तलाश कर रहे हैं, तो आप Atatus की कोशिश कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.