5

यह एक जटिल सवाल है जो वर्तमान में उपलब्ध होने के साथ असंभव हो सकता है, लेकिन अगर ऐसा करने का एक आसान तरीका यह बहुत बड़ा होगा।जावास्क्रिप्ट में गैर-ब्रेकिंग ब्रेकपॉइंट्स (ट्रेस पॉइंट)?

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

निकटतम मैं प्राप्त कर सकते हैं

की तरह में एक सशर्त ब्रेकप्वाइंट ड्रॉप करने, है निम्नलिखित: प्रत्येक ब्रेकपाइंट में

  1. चिपकाया जा रहा है इस:

    Sample trace

    इस दृष्टिकोण के साथ दो बड़ी समस्याओं कर रहे हैं बहुत बोझिल है। लोगों को इसका उपयोग करने की अधिक संभावना होगी यदि इसे प्रत्येक ब्रेकपॉइंट के लिए डिफ़ॉल्ट कार्रवाई के रूप में चुना जा सकता है।

  2. Google क्रोम में, लॉग कॉल दो बार निकाल दी जाती है।

इन समस्याओं में से किसी एक को बढ़ाने के लिए किसी भी विचार पर कोई विचार? मुझे लगता है कि यह आईई with VS में संभव हो सकता है, लेकिन यूआई समान रूप से बोझिल लगता है।

+1

यदि आपको सिर्फ डीओएम कार्यक्रमों का पता लगाने के लिए इसकी आवश्यकता है, तो आप कंसोल की ['monitorEvents()'] (http://www.briangrinstead.com/blog/chrome-developer-tools-monitorevents) विधि का उपयोग करने का प्रयास कर सकते हैं। – kpozin

+0

मैंने वास्तव में गैर-डोम ऑब्जेक्ट्स के लिए छद्म-घटनाओं को फेंक कर, एक बिंदु पर मॉनीटर एवेन्ट्स का उपयोग करने का प्रयास किया। आप त्रुटियों की निगरानी करके बहुत दूर हो सकते हैं, लेकिन इसमें आवश्यक दंडित फ़िल्टरिंग नहीं है। – Chris

उत्तर

0

मुझे ऐसा करने के लिए कुछ नहीं मिला, इसलिए मैं wrote my own

अब, console.log कॉल को लगातार डालने और हटाने के बजाय, मैं लॉग इन छोड़ देता हूं और केवल आवश्यक होने पर इसे देखता हूं।

चेतावनी: नीचे दिया गया विशिष्ट कोड अनचाहे है।

var debug = TraceJS.GetLogger("debug", "mousemove"); 
$('div').mousemove(function(evt) { 
    debug(this.id, evt); 
}); 

हर बार माउस एक DIV पर ले जाया जाता है, यह उत्पन्न करता है एक LogEvent टैग किया [ "MouseMove", {उस तत्व की आईडी}]

मज़ा हिस्सा करने में सक्षम किया जा रहा है चुनिंदा घड़ी आयोजन। आप केवल तत्व #a के लिए MouseMove घटनाओं को देखने के लिए चाहते हैं, तो कंसोल में निम्नलिखित फोन:

TraceJS('a'); 

जब मैं सभी MouseMove घटनाओं देखना चाहते हैं, आप कॉल कर सकते हैं:

TraceJS('mousemove'); 

केवल घटनाओं अपने फ़िल्टर से मेल खाते हैं। यदि आप TraceJS (कोई तर्क नहीं) कहते हैं, तो लॉग कॉल दिखाए जाने से रोकें।

1

मुझे मिला सबसे अच्छा विकल्प क्रोम के जावास्क्रिप्ट पैनल में जावास्क्रिप्ट कोड को संपादित करना था, एक console.log जोड़ना।

यह पृष्ठ लोड होने के बाद ही काम करेगा (जब तक कि आप रीफ्रेश के बाद ब्रेक पॉइंट नहीं डाल सकते हैं और फिर लॉगिंग लाइन जोड़ सकते हैं) और (खराब होने के लिए) आपको हर बार इसे फिर से लोड करना होगा पृष्ठ।

अपनी खोज के साथ शुभकामनाएं!

1

आईई 11 में अब विजुअल स्टूडियो से स्वतंत्र "ट्रेसपॉइंट्स" है। वे ठीक वही करते हैं जो आपने तीन साल पहले पूछा था। मैं उन्हें क्रोम या किसी अन्य ब्राउज़र में अभी तक नहीं देख रहा हूं, लेकिन उम्मीद है कि वे जल्द ही पकड़ लेंगे!

+0

कूल! https://msdn.microsoft.com/en-us/library/ie/dn255007(v=vs.85).aspx मुझे वास्तव में लाइब्रेरी पसंद है जिसे मैंने अभी स्थापित किया है क्योंकि मैं हर समय ट्रेस पॉइंट छोड़ सकता हूं और उन्हें चालू कर सकता हूं आवश्यकतानुसार चालू और बंद। मान लीजिए कि क्या होता है। – Chris

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