मैं बैश पूर्णताओं को कैसे डिबग करूं?


14

मैंने कुछ बाश पूर्ण होने वाले कार्य किए हैं जो सभी अलगाव में काम करते दिखाई देते हैं लेकिन जब मैं उनके साथ पूरा करने का प्रयास करता हूं तो मुझे अप्रत्याशित परिणाम मिलते हैं।

क्या यह संभव है कि bashdb को कनेक्ट किया जाए, फिर किसी चीज़ को पूरा करने का प्रयास करें और डिबग के माध्यम से कदम रखें और निर्धारित करें कि क्या गलत हो रहा है?


2
बस मेरे सेंट में जोड़ने के लिए: आपको set -xअपनी स्क्रिप्ट को डीबग करने के लिए बैश में उपयोग करना चाहिए । set +xअक्षम करने के लिए उपयोग करें ।

जवाबों:


6

set -x

यदि आप set -xया तो संवादात्मक सत्र या स्वतः पूर्ण स्क्रिप्ट में हैं, (लगभग?) प्रत्येक कमांड और उसके परिणाम प्रिंट किए जाएंगे। इसमें स्वतः पूर्ण स्क्रिप्ट के अंदर किया गया कार्य शामिल है।

यह फिर से वापस नीचे शांत किया जा सकता है set +x

-एक्स

कमांड के लिए प्रत्येक साधारण कमांड का विस्तार करने के बाद, कमांड कमांड, कमांड का चयन करें, या कमांड के लिए अंकगणित, PS4 के विस्तारित मूल्य को प्रदर्शित करें, उसके बाद कमांड और उसके विस्तारित तर्क या संबंधित शब्द सूची।

-से बैश मैनुअल #The सेट अंतर्निहित


2

बस कार्य पूरा होने से लॉग / आउटपुट; के रूप में वे सबसे अधिक संभावना नहीं है रॉकेट विज्ञान, यह करने के लिए काफी आसान होना चाहिए। यह संभव हो सकता है कि bashdb को जोड़ा जाए, लेकिन यह अनावश्यक लगता है ...


कनेक्टिंग बैशबड बहुत सरल होता और, मुझे उम्मीद है, स्क्रिप्ट में लॉग स्टेटमेंट जोड़ने की तुलना में जल्दी। हालांकि, मुझे नहीं पता कि क्या यह संभव है, और जवाबों की कमी यह सुझाव देगी कि ऐसा नहीं है। मैंने सुझाव दिया है कि आप की तरह एक फ़ाइल के लिए राज्य लॉग इन करके मेरी समस्या को हल करने में कामयाब रहे, लेकिन टर्मिनल के लिए लॉगिंग जानकारी को आउटपुट करना पूर्णता के साथ काम करने में सहायक नहीं है।
डान मिडवुड

3
@DanMidwood: दो टर्मिनलों (जैसे स्क्रीन + विभाजन) का उपयोग करें। एक में, पूर्णता चलाएं, दूसरे में, tail -fलॉग।
चेरोबा

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