2012-03-12 8 views
38

जीडीबी से आ रहा है, यह समाप्त होने पर एक समारोह के वापसी मूल्य मुद्रित करेगा। स्रोत को डीबग किए बिना क्रोम डीबगर से यह जानकारी प्राप्त करने का कोई तरीका है?क्रोम डीबगर में जावास्क्रिप्ट फ़ंक्शन रिटर्न मान का निरीक्षण कैसे करें?

+0

वर एक = एबीसी(); console.log (क); –

+0

वह कह रहा है कि वह स्रोत को बदलने के बिना इसे करना चाहता है। –

+0

क्या आपका मतलब है कि जब भी कोई फ़ंक्शन कोई मान देता है, तो आप इसे कंसोल पर लॉग इन करना चाहते हैं? आपका कंसोल संदेशों के साथ बाढ़ आ जाएगा और संभवतया लटका होगा यदि कोई रिकर्सन या इसी तरह की चीजें चल रही हैं। –

उत्तर

20

A fix for this 5 नवंबर, 2013 तक लागू किया गया था, लेकिन स्पष्ट रूप से केवल रिलीज़ किया गया है, जबकि मैं इसे क्रोम कैनरी में लिख रहा हूं। (मैं इसे 33.0.171 9.0 में देखता हूं, लेकिन इसे क्रोम बीटा संस्करण 32.0.1700.19 बीटा में नहीं देखता।)

यदि आपके द्वारा चलाए जा रहे संस्करण में यह है, तो जब आप रिटर्न स्टेटमेंट के माध्यम से कदम उठाते हैं, डीबगर का Scope Variables स्थानीय दायरे में मूल्य के साथ <return> प्रविष्टि शामिल है।

(मैं मुख्य डिबगिंग मैं करता हूँ के लिए कैनरी उपयोग करने की आवश्यकता है, लेकिन इस मुद्दे को संदर्भित notice देखकर जब तक <return> प्रविष्टि की उपस्थिति की सूचना नहीं किया!)

+5

क्या इसके लिए कोई वैरिएबल नाम उपलब्ध है ताकि हम इसे कंसोल में प्रिंट कर सकें? धन्यवाद – nXqd

+0

@nXqd हां, एक तरीका है। के रूप में [इस उत्तर] (https://stackoverflow.com/a/42771620/578288) करने के लिए "([यह क्रोम डिबगर में वापसी मान हेरफेर करने के लिए संभव है?] Https://stackoverflow.com/q/33108456/ 578288) "बताते हैं, आप स्थानीय दायरे में" * रिटर्न वैल्यू * "पर राइट-क्लिक कर सकते हैं और" ग्लोबल वैरिएबल के रूप में स्टोर "चुन सकते हैं। –

1

यदि आप ब्रेकपॉइंट सेट करते हैं, तो आप चर पर अपने माउस को घुमा सकते हैं और यह दिखाएगा कि मूल्य क्या हैं - क्या आप जो करने की कोशिश कर रहे हैं उसके लिए यह काम करता है?

+2

फंक्शन रिटर्न मान हमेशा चर में संग्रहीत नहीं होते हैं। यह अच्छा होगा अगर "अंतिम लौटाए गए मूल्य" के लिए साइडबार में स्वचालित चर या देखा गया मान था। –

+1

हाँ, यह सच है। दुर्भाग्यवश, मुझे विश्वास नहीं है कि एक समारोह से अंतिम लौटाए गए मूल्य को देखने का एक तरीका है। –

0

शायद यह करेगा?

1.) पृष्ठ स्रोत देखें।

2.) फ़ंक्शन परिभाषा की तलाश करें और इसे अपने क्लिपबोर्ड पर कॉपी करें।

3.) अपने क्लिपबोर्ड पर फ़ंक्शन परिभाषा को उस मूल्य को लॉग करने के लिए संशोधित करें जो वह लौटने वाला है। (यानी, console.log(x); return x;)

4.) कंसोल में पैच की गई फ़ंक्शन परिभाषा चिपकाएं और इसे चलाएं। यह मौजूदा फ़ंक्शन को ओवरराइड कर देगा।

5.) फ़ंक्शन को ट्रिगर करें।

3

नहीं, वर्तमान में कोई रास्ता नहीं है।

इसके लिए open enhancement request है, हालांकि। यह सौंपा गया है, और इस लेखन के रूप में यह this V8 enhancement पर प्रतीक्षा कर रहा है।

0

क्रोम में अभी भी संभव नहीं है, लेकिन फ़ायरफ़ॉक्स 24+ में यह संभव है। आपको फ़ंक्शन से स्टेप आउट (Shift + F11) की आवश्यकता है, और यह फ़ंक्शन वैल्यू या फंक्शन स्कोप में फेंक दिया गया अपवाद प्रदर्शित करेगा।

4

क्रोम का मेरा संस्करण 41.0.2272.118 है मीटर। यहां एक अच्छा कारण है कि आपको एक अलग लाइन पर जटिल रिटर्न स्टेटमेंट क्यों रखना चाहिए। यदि आप रिटर्न के बाद किसी भी लाइन पर ब्रेकपॉइंट जोड़ते हैं, तो क्रोम (< रिटर्न >: सत्य "पत्ते को" पैनल स्कोप वेरिएबल्स "के" लोकल "नोड के तहत" पैनल "के रूप में जोड़ देगा जब ब्रेकपॉइंट होता है मारो।

function bar() { 
    return true; 
}  
(function foo() { 
    return bar(); 
})(); // Place breakpoint here 
+0

आईएमओ, यह सवाल का जवाब है, और यह क्रोम 52 पर मेरे लिए काम करता है। (जो कैनरी नहीं है) – Tongfa

1

मैं क्रोम संस्करण 57.0.2987.98 बीटा (64-बिट) का उपयोग कर रहा हूं और यह वास्तव में अच्छा है। यहाँ एक स्क्रीनशॉट:

enter image description here

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