2011-03-25 24 views
13

मैं लूआ को दूरस्थ रूप से डीबग करने का सबसे अच्छा तरीका खोज रहा हूं, (एक वेब ब्राउज़र से)।लूआ को दूरस्थ रूप से कैसे डिबग करें?

मैंने RemDebug देखा, लेकिन अंतिम परियोजना अपडेट 2006 को किया गया था। यह लुआ 5.0 और 5.1 के साथ काम करता है, लेकिन लुआ 5.2 काफी करीब है, और मुझे जल्द ही अपडेट करने के लिए रेमडेबग नहीं दिख रहा है।

मैं अपने डीबग होस्ट पर एक छोटा एम्बेडेड वेब-सर्वर माउंट कर सकता हूं, और इसके साथ संवाद करने के लिए RemDebug जैसे कुछ का उपयोग कर सकता हूं, और HTTP के माध्यम से रिमोट डीबगिंग कर सकता हूं।

सुझावों की सराहना की जाती है।

+0

मुझे यकीन नहीं है कि मुझे समझ में आता है कि आपको वेब ब्राउज़र आधारित क्लाइंट की आवश्यकता क्यों है। क्या एक ग्राहक जो आपके लिए एक पूर्ण उड़ा डीबगर पर आधारित है? –

+0

अरे, मैं गेम डेवलपमेंट में काम करता हूं, मुझे कुछ सामान्य की आवश्यकता है जिसे मैं संकलित और कई आर्किटेक्चर पर चला सकता हूं। वेब-ब्राउज़र आधारित क्लाइंट बनाना मेरे लिए आदर्श होगा। – Goles

उत्तर

1

मुझे यकीन नहीं था कि आपको दूरस्थ रूप से लुआ डीबग करने की आवश्यकता है या HTTP पर ऐसा करने के बारे में पूछना है; मैं पूर्व के बारे में जवाब दे रहा हूं और HTTP पर ऐसा करने के तरीके से अवगत नहीं हूं।

LuaEdit और Decoda दोनों आपको चल रहे लुआ स्क्रिप्ट (उसी मशीन पर और रिमोट मशीन पर एक अलग प्रक्रिया पर) से दूरस्थ रूप से कनेक्ट करने की अनुमति देते हैं।

डीकोड जादू कर सकता है और वीएम में कोई बदलाव किए बिना लू वीएम के लिए ऐसा कर सकता है; LuaEdit के साथ आपको एक प्रदान किए गए डीएलएल या पुस्तकालय का उपयोग करके, एक विशिष्ट तरीके से वीएम बनाने की आवश्यकता है।

+0

यह वेब-आधारित नहीं है ... मैं वेब आधारित क्लाइंट को विकसित करने के बारे में सोच रहा हूं, लेकिन मुझे कुछ पॉइंटर्स की आवश्यकता होगी। – Goles

1

मुझे यकीन नहीं है कि यह सही है या नहीं। आशा है कि यह हालांकि मदद करता है:

स्रोत:

:

1 require"remdebug.engine" 
2 
3 remdebug.engine.start() 
4  
5 local tab = { 
6  foo = 1, 
7  bar = 2 
8 } 
9 
10 print("Start") 
11 
12 function bar() 
13  print("In bar 1") 
14  print("In bar 2") 
15 end 
16 
17 for i = 1, 10 do 
18  print("Loop") 
19  bar() 
20  tab.foo = tab.foo * 2 
21 end 
22 
23 print("End") 

पहले RemDebug नियंत्रक चलाएँ: http://www.keplerproject.org/remdebug/example.html

यह निम्न स्क्रिप्ट (test.lua) के एक डिबगिंग सत्र का एक उदाहरण है

% lua50 controller.lua लुआ रिमोट डीबगर प्रोग्राम चलाएं जिसे आप डीबग करना चाहते हैं इस समय आप अपना लक्षित प्रोग्राम (किसी अन्य विंडो में) चला सकते हैं:

% lua50 test.lua अब वापस खिड़की जहां controller.lua भाग गया (यह मान लेता है कि सी के अंदर test.lua चल रहे हैं: एक विंडोज सिस्टम पर \ विकास \ केपलर): करने के लिए जाना

पर रोका गया फ़ाइल सी: आदेशों

के लिए /development/kepler/test.lua प्रकार 'मदद'

basedir सी:/विकास/केपलर/ basedir C:/विकास/केपलर/ न्यू आधार निर्देशिका सी है/विकास/केप्लर/ चरण फ़ाइल सी पर रोका गया : /development/kepler/test.lua लाइन 6 से अधिक फ़ाइल सेल्सियस पर रोका गया: /development/kepler/test.lua लाइन 7 से अधिक फ़ाइल सेल्सियस पर रोका गया: /development/kepler/test.lua लाइन 10 से अधिक फ़ाइल सी: /development/kepler/test.lua लाइन पर रुक गया 15 setb test.lua 19 रन आप अपने आउटपुट को देखने के लिए किसी भी समय एप्लिकेशन विंडो में बदल सकते हैं। डीबगर सत्र पर वापस:

फ़ाइल सी:/विकास/केप्लर/परीक्षण पर रोका गया।lua लाइन 19

रन फ़ाइल सेल्सियस पर रोका गया: /development/kepler/test.lua लाइन 19 eval tab.foo eval tab.bar कार्यकारी old_tab = टैब शून्य कार्यकारी टैब = 2 शून्य eval टैब कार्यकारी टैब = old_tab शून्य eval tab.foo रन फ़ाइल सेल्सियस पर रोका गया: /development/kepler/test.lua लाइन 19 eval tab.foo delb test.lua 19 setw tab.foo == 32 सम्मिलित घड़ी एक्सपी संख्या। 1 रन फ़ाइल सेल्सियस पर रोका गया: /development/kepler/test.lua लाइन 17 (घड़ी अभिव्यक्ति 1: [tab.foo = 32]) eval tab.foo delw 1 रन कार्यक्रम समाप्त हो गया

+1

मूल प्रश्न में मैंने निर्दिष्ट किया कि मैंने RemDebug देखा है, लेकिन लुआ 5.2 काफी करीब है, और मुझे जल्द ही अपडेट प्राप्त करने के लिए RemDebug नहीं दिखाई देता है। मैं वास्तव में इसे अपने प्रश्न के उपयुक्त उत्तर के रूप में नहीं देखता हूं। – Goles

0

पाया वेब ब्राउज़र डिबगिंग के लिए पता नहीं है (विचार, मुझे अजीब लगता है शायद आप कर सकते हैं विस्तार कारण है कि आप एक वेब ब्राउज़र डीबगर की आवश्यकता होगी?) एक स्वसंपूर्ण के लिए

debu हालांकि, मैंने जीयूआई के साथ एक रिमोट डीबगर लिखा है: http://cushy-code.com/grld

यह सॉकेट एपीआई के साथ डीबग किए गए प्रोग्राम के साथ संचार करता है, इसलिए कोई भी नेटवर्क कनेक्शन करेगा, HTTP की आवश्यकता नहीं है।

उम्मीद है कि इससे मदद मिलती है।

+2

वैसे यह बहुत दिलचस्प लगता है, लेकिन इसे समझने के लिए मुझे एक ओपन सोर्स समाधान की आवश्यकता है। (सवाल यह है कि "दूरस्थ रूप से लुआ कैसे डिबग करें") धन्यवाद। – Goles

10

मैंने नए आदेश, नई विशेषताएं, बगफिक्स, और आईडीई के साथ एकीकरण के साथ RemDebug (MobDebug) के आधार पर एक नया डीबगर विकसित किया है।

MobDebug क्लाइंट (डीब्यूजी) और सर्वर (नियंत्रक) के बीच टीसीपी इंटरैक्शन पर आधारित है। यह RemDebug और अधिकांश अन्य दूरस्थ डिबगर्स के लिए भी मामला है। आप किसी और चीज (जैसे वेबस्केट या HTTP) के शीर्ष पर दौड़ने में सक्षम हो सकते हैं, लेकिन आपको अभी भी डीबग किए जाने वाले एप्लिकेशन को नियंत्रित करने के लिए कोरआउट और डीबग हुक चलाने में सक्षम होना चाहिए।

आप डिबग करने के लिए
  • तुम भी एक नियंत्रक
  • आवेदन के साथ अपने डिबगर करना चाहते हैं एक आवेदन पत्र की ग्राहक घटकों को लोड करता है
    • आप है

      डिबगिंग प्रक्रिया की वास्तुकला काफी सरल है डीबगर, जो नियंत्रक के लिए कनेक्शन खोलता है

    • नियंत्रक कमांड लाइन या आईडीई से कमांड स्वीकार करता है (MobDebug दोनों प्रदान करता है; यह ZeroBraneStudio के साथ एकीकृत करता है और इसे चलाने के लिए एक स्क्रिप्ट करने योग्य तरीका भी प्रदान करता है)
    • जब एप्लिकेशन लोड हो जाता है, तो डीबगर एक डीबग हुक स्थापित करता है, जो हर पंक्ति/कॉल/रिटर्न पर चलता है। इस डीबग हुक से एक रेज़्यूम कॉल डीबगर पर किया जाता है, जो नियंत्रक से कमांड निष्पादित कर सकता है (जैसे ब्रेकपॉइंट इंस्टॉल करना, अभिव्यक्ति का मूल्यांकन करना आदि)। जब अगला निष्पादन योग्य आदेश भेजता है (जैसे रन या चरण), डीबगर वापस हुक पर उत्पन्न होता है, जो तब ऐप पर वापस लौटने की अनुमति देता है।

    मौजूदा सॉकेट इंटरफ़ेस की नकल करना संभव हो सकता है (क्योंकि यह केवल कनेक्ट/भेजें/प्राप्त करने और एप्लिकेशन को निरस्त करने के लिए चयन/टाइमआउट का उपयोग कर रहा है) और अधिकांश लाइब्रेरी का पुन: उपयोग करें। मुझे अभी भी यकीन नहीं है कि आप इसे ब्राउज़र में क्यों चलाना चाहते हैं, हालांकि आप पहले से ही टीसीपी का समर्थन करने वाले किसी भी चीज़ पर एप्लिकेशन चला सकते हैं (मेरे पास एक डेस्कटॉप प्रोटोकइप है जो मेरे डेस्कटॉप से ​​मोबाइल डिवाइस पर चल रहा एक एप्लीकेशन है)।

  • +0

    मुझे वास्तव में पसंद है जो मैं यहां देखता हूं ... मैं इसे आज़मा दूंगा! – Goles

    +0

    आपका डीबगर बहुत अच्छा लग रहा है! शुरुआती लोगों के लिए कोई ट्यूटोरियल है (मैंने पहले से ही उदाहरण फ़ोल्डर को देखा है)? कुछ चीजें आत्म-व्याख्यात्मक नहीं हैं और 'सहायता' पूरी तरह से नहीं है। – Atcold

    +0

    @ एटकोल्ड, आप [इस सिंहावलोकन] (http://studio.zerobrane.com/doc-lua-debugging) और अन्य [डीबगिंग-संबंधित लिंक] (http://studio.zerobrane.com/documentation) को देखना चाह सकते हैं .html # डिबगिंग)। वे आईडीई के उपयोगकर्ता के परिप्रेक्ष्य से हैं, लेकिन चूंकि यह कार्यक्षमता मोबडेबग द्वारा प्रदान की जाने वाली चीज़ों पर आधारित है, इसलिए यह आपको अतिरिक्त अंतर्दृष्टि प्रदान कर सकती है कि यह कैसे काम करता है। –

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