2011-12-08 4 views
46

मैं गनोम शैल एक्सटेंशन विकसित करना चाहता हूं और पाया कि विकास प्रक्रिया में कदम उठाना वास्तव में आसान है लेकिन मैं अभी भी यह नहीं समझ सकता कि मेरे एक्सटेंशन को प्रभावी ढंग से डीबग/परीक्षण कैसे करें।गनोम शैल एक्सटेंशन का परीक्षण/डिबग कैसे करें? क्या इसके लिए कोई उपकरण है?

क्या इस उद्देश्य के लिए कोई उपकरण हैं? क्या हमारे पास आधुनिक ब्राउज़र या जावास्क्रिप्ट सर्वर वातावरण पर कोई वास्तविक समय कंसोल है?

उत्तर

42

हाँ, वास्तविक समय सांत्वना कहा जाता है "ग्लास खोज रहे हैं" और Alt + F2 दबाकर और प्रॉम्प्ट पर lg टाइप करके शुरू किया जा सकता।

और जानकारी: https://live.gnome.org/GnomeShell/LookingGlass

+0

lookingGlass के बारे में बस एक छोटा सा संदेह: मैंने 'global.log ('हैलो वर्ल्ड') शामिल किया;' मेरे एक्सटेंशन में एक लूप के अंदर लेकिन कंसोल में कुछ भी लॉग नहीं हुआ। एक्सटेंशन प्रोग्राम संदेशों को प्रोग्रामिक रूप से नहीं कर सकता? – marcio

+0

मुझे पहले से ही जवाब मिल गया है। यह ठीक से लॉग करता है लेकिन स्क्रिप्ट में किसी भी अपडेट के बाद आपको gnome shell environment को फिर से लोड करना होगा (Alt + F2 और 'r' टाइप करें)। – marcio

+0

क्या आप जानते हैं कि एलजी कमांड लाइन से क्यों काम नहीं कर रहा है ?? !!! alt + f2 के साथ काम करना लेकिन टर्मिनल से नहीं! –

16

ग्लास खोज रहे हैं महान है। यदि आपको सीधे कंसोल की ज़रूरत है, तो आप एक प्राप्त कर सकते हैं, लेकिन एलजी के माध्यम से नहीं, कम से कम 3.6 के रूप में नहीं।

यदि आप टर्मिनल खोलते हैं और gnome-shell --replace टाइप करते हैं, तो रनम इंस्टेंस को बदलकर, gnome-shell वहां से चलाएगा, और इसके बाद वैश्विक लॉग आउटपुट उस कंसोल में दिखाई देगा। "मूल्यांकनकर्ता" टैब में F2lg, और फिर global.log("foo") -

आप Alt करके लुकिंग ग्लास के साथ यह परीक्षण कर सकते हैं।

+0

+1 यह बहुत अच्छी जानकारी है, मैं इस विधि का उपयोग भी कर रहा हूं – marcio

+1

जब मैंने दृष्टिकोण का उपयोग करने के बाद gnome-shell को रद्द कर दिया, तो सब कुछ छोड़कर मेरे माउस के लिए मुझे फिर से काम करने के लिए अपनी मशीन को फिर से शुरू करना पड़ा। – EndangeredMassa

+0

ऐसा इसलिए है क्योंकि आपने gnome-shell का अपना एकमात्र उदाहरण मारा है। जब आप पूरा कर लें तो 'सी-सी' के साथ इसे मारने के बजाय, इसे निलंबित करने के लिए 'सी-जेड' दबाएं। फिर कंसोल में 'बीजी ' टाइप करें (आप यह नहीं देख सकते कि आप इस आदेश को टाइप करते समय क्या टाइप कर रहे हैं) और फिर gnome-shell पृष्ठभूमि में चलाएगा।इसके बाद, टर्मिनल विंडो से प्रक्रिया को अलग करने के लिए 'अस्वीकृत ' चलाएं, जिसके बाद आप टर्मिनल विंडो को सुरक्षित रूप से बंद कर सकते हैं। –

7

मैं अधिक जानकारी के लिए ~/.xsession-errors और ~/.cache/gdm/session.log फ़ाइलों को पढ़ना पसंद करता हूं। कुछ त्रुटि संदेशों में अन्य अपवादों या त्रुटियों के साथ संबंध हो सकता है।

+7

@ User231371 यह इंगित करना चाहता है: उबंटू gnome में, लॉग ~/.cache/upstart/gnome-session.log में हैं। –

3

Anjuta देव-स्टूडियो gnome-shell एक्सटेंशन के साथ काम करने के लिए एक शानदार टूल है; यह एक डीबगर, जीयूआई डिजाइनर, संस्करण नियंत्रण, और अधिक से लैस है।

journalctl /usr/bin/gnome-session -f -o cat 
लगातार

यह (-f: सूक्ति-शेल एक्सटेंशन के साथ Anjuta उपयोग करने के लिए भी एक निर्देशित ट्यूटोरियल GNOME के ​​wiki-pages

28

फेडोरा 20 (और शायद किसी भी नए linux distro) आपको लगता है कि आदेश का उपयोग कर सकते हैं पर अधिक परियोजनाओं है) टर्मिनल विंडो में gnome-session द्वारा उत्पन्न त्रुटियों को प्रिंट करता है। मैं -o cat ध्वज पसंद करता हूं क्योंकि यह बिना समय के पूर्ण संदेश दिखाता है।

फेडोरा 22 पर, मेरा मानना ​​है कि इसके साथ बदल दिया गया था:

journalctl /usr/bin/gnome-shell -f -o cat 
+2

यह 'gnome-shell --replace' से बहुत बेहतर है क्योंकि आईडी टर्मिनल पर एक gnome shell session संलग्न नहीं करता है :) – marcio

+0

उबंटू वोकर्स पर भी –

3

मैं दूसरे जवाब पर अभी तक कोई टिप्पणी नहीं कर सकता है, इसलिए सोचा कि मैं जोड़ना होगा - लेकिन देर से यह हो सकता है:

  • जियोफ़ के उत्तर के टिप्पणी 2 के लिए, alt+f2 - r और enter के माध्यम से खोल को फिर से शुरू करें, जब ऐसा होता है - टर्मिनल रन सत्र स्वचालित रूप से समाप्त हो जाएगा (कम से कम डेबियन पर)।

  • मैं सामान्य डीबगिंग के लिए जेएसएनजेक के उत्तर की सिफारिश करता हूं, जो डेबियन जेसी के साथ भी काम करता है; शायद sudo है कि हालांकि। यह gnome त्रुटियों, साथ ही global.log() संदेशों को जो भी टर्मिनल आप इसे चलाते हैं, दिखाएगा।

कुछ भी हैं, तो यह मेरे लिए एक और अधिक पूरा संदर्भ प्रदान करता है - के रूप में मैं इस पेज का सामना करना पड़ा और अधिक से अधिक एक बार जब जानकारी को संदर्भित मैं मेरी स्मृति में ताजा नहीं रहते हो।

1

अन्य उत्तरों मेरे स्वयं के विस्तार को विकसित करते समय वास्तव में मेरे लिए काम नहीं करते थे। क्या फिर भी था:

journalctl /usr/lib/gnome-session/gnome-session-binary -f -o cat 

आप उत्पादन declutter के लिए सिर्फ़ अपने ऐप्लिकेशन को देखना चाहते हैं, तो आप उपयोग कर सकते हैं:

journalctl /usr/lib/gnome-session/gnome-session-binary -f -o cat | grep [myAppId] 

आप भी गैर त्रुटि ऊपर उपरोक्त विधि का उपयोग कर लॉग पर पहुंचना चाहते हैं आप उपयोग कर सकते हैं:

global.log('[myAppId]', valueToLog); 

आप अपने गनोम सत्र के लिए सही पथ नहीं जानते, तो आप भी उपयोग कर सकते हैं:

journalctl -f | grep gnome-session 

यह क्यों काम नहीं कर रहा था शायद मेरे gnome-session-binary path के कारण अलग था, जो कि gnome के एक नए संस्करण से स्थापित हो सकता है। https://github.com/paperwm/gnome-shell-mode

यह "बीटा" (। Dec 2017) में अब भी है, लेकिन इसकी पहले से ही बहुत उपयोगी:

+0

फेडोरा 26 पर, सही पथ '/ etc/libexec/gnome है -session-binary'। – akaihola

+0

हालांकि, 'global.log()' संदेश 'पत्रिका' आउटपुट में नहीं, और न ही लुकिंग ग्लास में बदलते हैं। क्या फेडोरा 26 पर डिफ़ॉल्ट रूप से लॉगिंग बंद हो रहा है? – akaihola

+0

इसके बजाय, लॉग इन संदेश * करें * 'jourctl/usr/bin/gnome-shell' में दिखाएं। – akaihola

1

हम एक Emacs पैकेज सूक्ति-शेल एक्सटेंशन यहां विकास के उद्देश्य से विकसित कर रहे हैं।

सुविधाएँ

  • स्वत: पूर्णता
  • लाइन, चयन, वर्तमान समारोह, बफर के Eval (वैकल्पिक एक टिप्पणी में बफर में परिणाम चिपकाने)
  • (क्या देख गिलास प्रदान करता है की तुलना में बेहतर muuuch)
  • प्रलेखन लुकअप सहायक
  • आपके द्वारा काम कर रहे मॉड्यूल को फिर से लोड करने के लिए सहायक utomeing gnome-shell
संबंधित मुद्दे