Android Studio एक डीबगर उपलब्ध कराता है, जिसकी मदद से ये काम और दूसरे काम किए जा सकते हैं:
- अपने ऐप्लिकेशन को डीबग करने के लिए कोई डिवाइस चुनें.
- अपने Java, Kotlin, और C/C++ कोड में ब्रेकपॉइंट सेट करें.
- वैरिएबल की जांच करें और रनटाइम के दौरान एक्सप्रेशन का आकलन करें.
इस पेज पर, डीबगर के बुनियादी काम करने के तरीके के बारे में निर्देश दिए गए हैं. ज़्यादा दस्तावेज़ों के लिए, IntelliJ IDEA के डीबगिंग दस्तावेज़ भी देखें.
डीबग करने की सुविधा चालू करना
डीबग करने से पहले, ये काम करें:
- अपने डिवाइस पर डीबग करने की सुविधा चालू करें.
- अगर एम्युलेटर का इस्तेमाल किया जा रहा है, तो डीबग करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. हालांकि, कनेक्ट किए गए डिवाइस के लिए, आपको डिवाइस के डेवलपर के विकल्पों में डीबग करने की सुविधा चालू करनी होगी.
- डीबग करने लायक बिल्ड वैरिएंट चलाएं.
ऐसे बिल्ड वैरिएंट का इस्तेमाल करें जिसे
debuggable true
शामिल है (Kotlin स्क्रिप्ट मेंisDebuggable = true
) बिल्ड कॉन्फ़िगरेशन में.आम तौर पर, डिफ़ॉल्ट "डीबग" वैरिएंट चुना जा सकता है. यह वैरिएंट, हर Android Studio प्रोजेक्ट में शामिल होता है. भले ही, यह
build.gradle
फ़ाइल में न दिखता हो. हालांकि, अगर आपको नए बिल्ड टाइप को परिभाषित करें, जो डीबग करने लायक हों, आपकोdebuggable true
जोड़ना होगा बिल्ड टाइप में जोड़ें:- अपने ऐप्लिकेशन के कोड में ब्रेकपॉइंट सेट करें.
- टूलबार में, टारगेट किए गए डिवाइस के मेन्यू से, अपने ऐप्लिकेशन को डीबग करने के लिए कोई डिवाइस चुनें.
पहली इमेज. टारगेट किए गए डिवाइस का मेन्यू. अगर आपने कोई डिवाइस कॉन्फ़िगर नहीं किया है, तो आपको Android एमुलेटर का इस्तेमाल करने के लिए, किसी डिवाइस को यूएसबी के ज़रिए कनेक्ट करना, किसी डिवाइस को वाई-फ़ाई के ज़रिए कनेक्ट करना या एवीडी बनाना होगा.
- टूलबार में, डीबग करें
पर क्लिक करें.
अगर इस डिवाइस पर आपका ऐप्लिकेशन पहले से चल रहा है, तो एक डायलॉग दिखेगा. इसमें पूछा जाएगा कि क्या आपको 'रन से डीबग करें' पर स्विच करें. डीबग करने के लिए, डिवाइस को रीस्टार्ट करना होगा. यहां की यात्रा पर हूं ऐप्लिकेशन के उसी इंस्टेंस को बनाए रखें, डीबग रद्द करें पर क्लिक करें और इसके बजाय चल रहे ऐप्लिकेशन के साथ डीबगर को अटैच करें. अगर ऐसा नहीं है, तो Android Studio APK बनाता है, डीबग पासकोड से साइन करता है, उसे आपके चुने हुए डिवाइस पर इंस्टॉल करता है, और उसे चलाता है.
अगर आपको अपने प्रोजेक्ट में C और C++ कोड जोड़ें, Android Studio, डीबग में एलएलडीबी डीबगर भी चलाता है विंडो का उपयोग करें.
- अगर डीबग विंडो नहीं खुल रही है, तो व्यू > टूल विंडो > डीबग चुनें या
टूल विंडो बार में डीबग
पर क्लिक करें.
- Android प्रोसेस में डीबगर अटैच करें
पर क्लिक करें.
- प्रोसेस चुनें डायलॉग में, अपनी पसंद की प्रोसेस चुनें
डीबगर को इसमें अटैच करें.
- अगर एम्युलेटर या रूट किए गए डिवाइस का इस्तेमाल किया जा रहा है, तो सभी प्रोसेस देखने के लिए, सभी प्रोसेस दिखाएं. रूट किए गए डिवाइस पर, यह डिवाइस पर चल रही सभी प्रोसेस दिखाएगा. हालांकि, रूट न किए गए डिवाइस पर यह सिर्फ़ डीबग करने लायक प्रोसेस.
- Android डीबगर की सेटिंग का इस्तेमाल करें मेन्यू में जाकर, कोई मौजूदा रन/डीबग कॉन्फ़िगरेशन चुना जा सकता है. C और C++ कोड के लिए, इसकी मदद से, LLDB के स्टार्टअप कमांड, LLDB के पोस्ट-अटैचमेंट वाले कमांड, और सिंबल को फिर से इस्तेमाल किया जा सकता है मौजूदा कॉन्फ़िगरेशन में मौजूद डायरेक्ट्री.
- अगर आपके पास कोई मौजूदा रन/डीबग कॉन्फ़िगरेशन नहीं है, तो नया बनाएं चुनें. इस विकल्प को चुनने पर, डीबग टाइप चालू हो जाता है मेन्यू की मदद से, कोई दूसरा डीबग टाइप चुना जा सकता है. इन्होंने बदलाव किया है डिफ़ॉल्ट है, तो Android Studio 'अपने-आप डीबग करें' टाइप का इस्तेमाल करता है, ताकि आपके लिए डीबगर विकल्प का उपयोग करेगा, जो आपके प्रोजेक्ट में Java या C/C++ कोड शामिल होने के आधार पर तय होता है.
- ठीक है पर क्लिक करें.
आपको डीबग विंडो दिखेगी.
- प्रोग्राम चलाने और नेविगेट करने के लिए टूलबार ब्रेकपॉइंट के साथ काम करना देखें
- थ्रेड सिलेक्टर
- एक्सप्रेशन का आकलन और उसे वॉच में डालना. वैरिएबल की जांच करें देखें.
- स्टैक डिसप्ले
- वैरिएबल पैनल. वैरिएबल की जांच करें देखें.
- अपने-आप पता लगाना
- अगर आपको Android Studio से, डीबग किए जा रहे कोड के लिए सबसे अच्छा विकल्प अपने-आप चुनने का विकल्प चाहिए, तो डीबग करने का यह तरीका चुनें. उदाहरण के लिए, अगर आपके पास C या C++ आपके प्रोजेक्ट में, Android Studio अपने-आप Dual डीबग का इस्तेमाल करता है टाइप करें. ऐसा न करने पर, Android Studio सिर्फ़ Java के लिए डीबग टाइप का इस्तेमाल करता है.
- सिर्फ़ Java के लिए
- अगर आपको सिर्फ़ Java या Kotlin में लिखे गए कोड को डीबग करना है, तो डीबग करने का यह तरीका चुनें. सिर्फ़ Java के लिए डीबगर आपके नेटिव कोड में सेट किए गए किसी भी ब्रेकपॉइंट या घड़ियों को अनदेखा कर देता है.
- सिर्फ़ नेटिव विज्ञापन (सिर्फ़ C/C++ कोड के साथ उपलब्ध)
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
अगर आपको अपने कोड को डीबग करने के लिए, सिर्फ़ एलएलडीबी का इस्तेमाल करना है, तो इस डीबग टाइप को चुनें. इसका इस्तेमाल करते समय
डीबग टाइप, Java डीबगर सेशन व्यू उपलब्ध नहीं है. डिफ़ॉल्ट रूप से,
LLDB सिर्फ़ आपके नेटिव कोड की जांच करता है और आपके Java में ब्रेकपॉइंट को अनदेखा करता है
कोड. अगर आपको अपने Java कोड को भी डीबग करना है, तो अपने-आप पता लगाने या ड्यूअल डीबग टाइप में से किसी एक पर स्विच करें.
नेटिव डीबगिंग सिर्फ़ उन डिवाइसों पर काम करती है जो इन ज़रूरी शर्तों को पूरा करते हैं:
डिवाइस पर
run-as
काम करता है.यह देखने के लिए कि इस डिवाइस पर
run-as
काम करता है या नहीं, यहां दिए गए निर्देश को इस पर चलाएं आपके डिवाइस से कनेक्ट किया गया ADB शेल:run-as
your-package-name pwdyour-package-name
को अपने ऐप्लिकेशन के पैकेज नाम से बदलें. अगर डिवाइस परrun-as
काम करता है, तो कमांड बिना किसी गड़बड़ी के पूरा हो जाना चाहिए.डिवाइस पर
ptrace
चालू हो.यह देखने के लिए कि
ptrace
चालू है या नहीं, ADB पर नीचे दिया गया निर्देश चलाएं शेल भी खोजें:sysctl kernel.yama.ptrace_scope
अगर
ptrace
चालू है, तो निर्देश0
याunknown key
गड़बड़ी. अगरptrace
चालू नहीं है, तो यह0
के अलावा अन्य मान.
- Dual (Java + नेटिव) - सिर्फ़ C/C++ कोड के साथ उपलब्ध है
-
अगर आपको Java और नेटिव कोड, दोनों को डीबग करने के बीच स्विच करना है, तो डीबग करने का यह टाइप चुनें.
Android Studio, आपके ऐप्लिकेशन में Java डीबगर और एलएलडीबी, दोनों को अटैच करता है
ताकि गड़बड़ी की जांच की जा सके.
ऐप्लिकेशन को रीस्टार्ट किए बिना, आपके Java और नेटिव कोड, दोनों में ब्रेकपॉइंट
या अपने डीबग कॉन्फ़िगरेशन को बदलकर.
दूसरी इमेज में, डीबग विंडो के टाइटल की दाईं ओर मौजूद दो टैब पर नज़र डालें. ऐप्लिकेशन में Java और C++ कोड, दोनों का इस्तेमाल किया गया है. इसलिए, नेटिव को डीबग करने के लिए एक टैब कोड और दूसरा, जैसा कि -java से दिखाया गया है.
तीसरी इमेज. नेटिव कोड और टैब को डीबग करने के लिए Tab का इस्तेमाल करें. - लाइन ब्रेकपॉइंट
- सबसे सामान्य टाइप, लाइन ब्रेकपॉइंट होता है. यह कोड की किसी तय लाइन पर, आपके ऐप्लिकेशन के चलने को रोक देता है. रोके जाने पर, आप चरों की जांच कर सकते हैं, व्यंजकों का आकलन कर सकते हैं और फिर जारी रख सकते हैं एक्ज़ीक्यूशन लाइन का इस्तेमाल करके रनटाइम की गड़बड़ियों की वजहों का पता लगाया जा सकता है.
- मेथड ब्रेकपॉइंट
- कोई तरीका ब्रेकपॉइंट आपके ऐप्लिकेशन के किसी खास चरण में आने या उससे बाहर निकलने पर, एक्ज़ीक्यूशन को रोक देता है तरीका. रोके जाने पर, आप चरों की जांच कर सकते हैं, व्यंजकों का आकलन कर सकते हैं और फिर जारी रख सकते हैं एक्ज़ीक्यूशन लाइन का इस्तेमाल करके रनटाइम की गड़बड़ियों की वजहों का पता लगाया जा सकता है. जब आप कंपोज़ेबल फ़ंक्शन का इस्तेमाल करने पर, डीबगर मदद के लिए कंपोज़ेबल के पैरामीटर और उनकी स्थिति की सूची बनाता है यह पहचान की जा सकती है कि किन बदलावों की वजह से उसे फिर से बनाने की वजह हो सकती है.
- फ़ील्ड ब्रेकपॉइंट
- फ़ील्ड ब्रेकपॉइंट, आपके ऐप्लिकेशन के एक्ज़ीक्यूशन को रोक देता है. ऐसा तब होता है, जब ऐप्लिकेशन किसी फ़िल्टर करें.
- अपवाद के लिए ब्रेकपॉइंट
- अपवाद ब्रेकपॉइंट, किसी अपवाद के दिखने पर आपके ऐप्लिकेशन के चलने को रोक देता है.
- कोड की वह लाइन ढूंढें जहां आपको प्रोसेस को रोकना है.
- कोड की उस लाइन के बाईं ओर मौजूद गटर पर क्लिक करें या कर्सर को लाइन पर ले जाएं और Control+F8 (macOS पर, Command+F8) दबाएं.
- अगर आपका ऐप्लिकेशन पहले से चल रहा है, तो Android प्रोसेस में डीबगर अटैच करें पर क्लिक करें
. अगर ऐसा नहीं है, तो डीबग करना शुरू करने के लिए, डीबग पर क्लिक करें
.
-
किसी वैरिएबल के लिए ऑब्जेक्ट ट्री की जांच करने के लिए, उसे वैरिएबल व्यू में बड़ा करें. अगर आपने वैरिएबल व्यू नहीं दिख रहा है, तो लेआउट सेटिंग पर क्लिक करें
और पक्का करें कि वैरिएबल पर सही का निशान लगा हो.
-
कोई तरीका डाले बिना कोड में अगली लाइन पर जाने के लिए, चरण
से ज़्यादा.
-
तरीके के कॉल में पहली लाइन पर जाने के लिए, चरण पर क्लिक करें
में.
-
मौजूदा तरीके से बाहर की लाइन पर जाने के लिए, चरण पर क्लिक करें
आउट हो गया.
-
ऐप्लिकेशन को सामान्य तरीके से चलाना जारी रखने के लिए, प्रोग्राम को फिर से शुरू करें पर क्लिक करें
.
- जब LLDB डीबगर को आपके C/C++ कोड में ब्रेकपॉइंट मिलता है, तो Android Studio <your-module> टैब पर स्विच हो जाता है. फ़्रेम, वैरिएबल, और
घड़ियों के पैनल भी उपलब्ध होते हैं और ठीक वैसे ही काम करते हैं, जैसे वे
Java कोड को डीबग कर रहे थे.
हालांकि, Threads पैनल उपलब्ध नहीं है एलएलडीबी सेशन व्यू में, अपने ऐप्लिकेशन की प्रोसेस ऐक्सेस करने के लिए सूची खोलें. विंडो फ़्रेम को डीबग करने और वैरिएबल की जांच करने के तरीके के बारे में बताने वाले सेक्शन में, इन पैनल के बारे में ज़्यादा जानें.
ध्यान दें: अपने नेटिव कोड में ब्रेकपॉइंट की जांच करते समय, Android सिस्टम उस वर्चुअल मशीन को निलंबित कर देता है जो आपके ऐप्लिकेशन के Java बाइटकोड को चलाती है. इसका मतलब है कि अपने नेटिव कोड में ब्रेकपॉइंट की जांच करते समय, आपके पास Java डीबगर के साथ इंटरैक्ट करने या अपने Java डीबगर सेशन से किसी भी स्टेटस की जानकारी पाने का विकल्प नहीं है.
- जब Java डीबगर को आपके Java या Kotlin कोड में ब्रेकपॉइंट मिलता है, तो Android Studio, <your-module>-java टैब पर स्विच हो जाता है.
- LLDB से डीबग करते समय, LLDB को कमांड-लाइन विकल्प पास करने के लिए, LLDB सेशन व्यू में LLDB टर्मिनल का इस्तेमाल किया जा सकता है. अगर आपने पक्का किया है कि वे कमांड जिन्हें आपको हर बार डीबगिंग शुरू करते समय एलएलडीबी को एक्ज़ीक्यूट करना है आपका ऐप्लिकेशन, डीबगर के आपके डाउनलोड करके, आप उन कमांड को अपने डीबग कॉन्फ़िगरेशन में जोड़ें.
- देखने या दिखाने के लिए एक्सप्रेशन डालें
- एक्सप्रेशन का एक बार आकलन करने के लिए, स्मार्टवॉच पर जोड़ें पर क्लिक करें या Enter दबाएं.
- आपका टारगेट फ़िज़िकल डिवाइस या एमुलेटर, x86 या x86_64 सीपीयू का इस्तेमाल करता हो. अगर आपने
आपका डिवाइस ARM सीपीयू का इस्तेमाल करता है, तो आपको अपने डिवाइस की
मेमोरी में वैरिएबल का पता या तो 4 बाइट, 32-बिट प्रोसेसर के लिए या 8
बाइट, 64-बिट प्रोसेसर के लिए. अपने नेटिव कोड में किसी वैरिएबल को अलाइन करने के लिए, वैरिएबल डिक्रेसिएशन में
__attribute__((aligned(num_bytes)))
डालें, जैसा कि यहां दिखाया गया है:// For a 64-bit ARM processor int my_counter __attribute__((aligned(8)));
- आपने पहले ही तीन या उससे कम वॉचपॉइंट असाइन किए हैं. Android Studio, सिर्फ़ x86 या x86_64 टारगेट डिवाइसों पर, ज़्यादा से ज़्यादा चार वॉचपॉइंट के साथ काम करता है. किसी और तरीके से ऐसा हो सकता है कि डिवाइसों पर कम वॉचपॉइंट काम करें.
- जब आपका ऐप्लिकेशन ब्रेकपॉइंट पर निलंबित हो, तब आपके LLDB सेशन व्यू में वैरिएबल पैनल.
-
उस वैरिएबल पर राइट क्लिक करें जो उस मेमोरी ब्लॉक में मौजूद है जिसे आपको ट्रैक करना है और वॉचपॉइंट जोड़ें को चुनें.
नौवीं इमेज. मेमोरी में किसी वैरिएबल के लिए वॉचपॉइंट जोड़ें. वॉचपॉइंट को कॉन्फ़िगर करने के लिए एक डायलॉग बॉक्स दिखता है, जैसा कि नौवीं इमेज में दिखाया गया है.
नीचे दिए गए विकल्पों की मदद से अपने वॉचपॉइंट को कॉन्फ़िगर करें:
- चालू है: अगर आपको बताना है, तो इस विकल्प से चुने हुए का निशान हटाएं Android Studio, वॉचपॉइंट को अनदेखा करने के लिए है. ऐसा तब तक करें, जब तक सेटिंग न बदली जाए. Android Studio, आपके वॉचपॉइंट को सेव करता है, ताकि आप उसे बाद में ऐक्सेस कर सकें.
- रोकना: डिफ़ॉल्ट रूप से, Android सिस्टम आपके ऐप्लिकेशन की प्रोसेस को तब रोक देता है, जब वह वॉचपॉइंट के लिए असाइन की गई मेमोरी का ब्लॉक ऐक्सेस करता है. अगर आपको ऐसा नहीं करना है, तो इस विकल्प से चुने हुए का निशान हटाएं. इससे, आपको ऐसे अन्य विकल्प दिखते हैं जिनका इस्तेमाल करके, सिस्टम के आपके वॉचपॉइंट के साथ इंटरैक्ट करने पर, उसके व्यवहार को पसंद के मुताबिक बनाया जा सकता है: कंसोल में मैसेज लॉग करें और थ्रिल होने पर हटाएं.
- ऐक्सेस टाइप: चुनें कि आपका ऐप्लिकेशन, वैरिएबल के लिए सिस्टम से मिलने वाली मेमोरी के ब्लॉक को रीड या लिखने की कोशिश करते समय, आपके वॉचपॉइंट को ट्रिगर करे या नहीं. अपने वॉचपॉइंट को ट्रिगर करने के लिए पढ़ने या लिखने पर, कोई भी चुनें.
- हो गया पर क्लिक करें.
- वैरिएबल सूची में, दिखाने के लिए रिसॉर्स लाइन पर कहीं भी राइट-क्लिक करें सूची.
- सूची में, इस रूप में देखें को चुनें. इसके बाद, वह फ़ॉर्मैट चुनें जिसका आपको इस्तेमाल करना है.
उपलब्ध फ़ॉर्मैट, आपके चुने गए संसाधन के डेटा टाइप पर निर्भर करते हैं. आपको इनमें से एक या उससे ज़्यादा विकल्प दिख सकते हैं:
- क्लास: क्लास की परिभाषा दिखाएं.
- toString: स्ट्रिंग फ़ॉर्मैट दिखाएं.
- ऑब्जेक्ट: ऑब्जेक्ट (क्लास का इंस्टेंस) की परिभाषा दिखाएं.
- अरे: अरे फ़ॉर्मैट में दिखाएं.
- टाइमस्टैंप: तारीख और समय को इस तरह से दिखाएं: yyyy-mm-dd hh:mm:ss.
- Android Auto की सुविधा वाले वाहन: Android Studio, डेटा टाइप के आधार पर सबसे अच्छा फ़ॉर्मैट चुनता है.
- बाइनरी: शून्य और एक का इस्तेमाल करके बाइनरी वैल्यू दिखाएं.
- MeasureSpec: पैरंट से चुने गए चाइल्ड एलिमेंट में भेजी गई वैल्यू.
MeasureSpec
देखें. - हेक्स: हैक्साडेसिमल वैल्यू के तौर पर दिखाएं.
- प्राइमटिव: प्राइमटिव डेटा टाइप का इस्तेमाल करके, संख्या वाली वैल्यू के तौर पर दिखाएं.
- पूरी संख्या: इसे संख्या के टाइप की वैल्यू के तौर पर दिखाएं
Integer
.
- संसाधन मान पर राइट क्लिक करें.
- इस तरह देखें को चुनें.
- बनाएं को चुनें.
- Java डेटा टाइप रेंडरर डायलॉग दिखता है. यहां दिए गए निर्देशों का पालन करें: Java डेटा टाइप रेंडरर.
android { buildTypes { customDebugType { debuggable true ... } } }
android { buildTypes { create("customDebugType") { isDebuggable = true ... } } }
यह प्रॉपर्टी, C/C++ कोड वाले मॉड्यूल पर भी लागू होती है.
ध्यान दें: अब jniDebuggable
प्रॉपर्टी का इस्तेमाल नहीं किया जाता.
अगर आपका ऐप्लिकेशन किसी ऐसे लाइब्रेरी मॉड्यूल पर निर्भर करता है जिसे आपको डीबग करना है, तो उस लाइब्रेरी को भी debuggable true
के साथ पैकेज किया जाना चाहिए, ताकि वह अपने डीबग सिंबल बनाए रख सके.
यह पक्का करने के लिए कि आपके ऐप्लिकेशन प्रोजेक्ट के डीबग किए जा सकने वाले वैरिएंट को, डीबग करने लायक वैरिएंट मिले
लाइब्रेरी मॉड्यूल, अपनी लाइब्रेरी के ऐसे वर्शन प्रकाशित करें जो डिफ़ॉल्ट न हों.
डीबग करना शुरू करना
डीबगिंग सेशन को इस तरह शुरू किया जा सकता है:
चल रहे ऐप्लिकेशन में डीबगर को अटैच करें
अगर आपका ऐप्लिकेशन आपके डिवाइस पर पहले से चल रहा है, तो डीबग किए बिना ही डीबग किया जा सकता है ऐप्लिकेशन को रीस्टार्ट करने का तरीका:
डिवाइस एक्सप्लोरर (व्यू > टूल विंडो > डिवाइस एक्सप्लोरर) के प्रोसेस टैब में भी, डीबग की जा सकने वाली प्रोसेस की सूची होती है. वहां से कोई प्रोसेस चुनकर उसे मार गिराएं
,
फ़ोर्स-स्टॉप
,
या डीबगर को दी गई प्रोसेस से अटैच करें
.
डीबग विंडो

डीबग विंडो को
ध्यान दें: Android Studio डीबगर और गार्बेज कलेक्टर
आसानी से इंटिग्रेट हो जाता है. Android वर्चुअल मशीन यह गारंटी देती है कि
डीबगर को पता है कि डीबगर जब तक कचरा इकट्ठा नहीं करता, तब तक उसे इकट्ठा नहीं किया जाता
डिसकनेक्ट करता है. इस वजह से, डिबगर के कनेक्ट होने के दौरान ऑब्जेक्ट का डेटा इकट्ठा हो सकता है. उदाहरण के लिए, अगर डीबगर को चल रहा थ्रेड दिखता है,
संबंधित Thread
डीबगर के डिसकनेक्ट होने तक ऑब्जेक्ट इकट्ठा नहीं किया जाता, भले ही थ्रेड खत्म हो गया हो.
डीबगर का टाइप बदलना
Java/Kotlin कोड और C/C++ कोड को डीबग करने के लिए, अलग-अलग डीबगर टूल की ज़रूरत होती है. इसलिए, Android Studio डीबगर की मदद से, यह चुना जा सकता है कि किस तरह के डीबगर का इस्तेमाल करना है. डिफ़ॉल्ट रूप से, Android Studio यह तय करता है कि किस डीबगर का इस्तेमाल करना है. यह तय करने के लिए, वह अपने-आप पता लगाएं डीबगर टाइप का इस्तेमाल करके, आपके प्रोजेक्ट में मौजूद भाषाओं का पता लगाता है.
डीबग कॉन्फ़िगरेशन में डीबगर को मैन्युअल तरीके से चुनने के लिए, रन > कॉन्फ़िगरेशन में बदलाव करें पर क्लिक करें. आप डायलॉग बॉक्स में डीबगर को भी चुन सकते हैं. यह डायलॉग बॉक्स आपको Run > Android प्रोसेस में डीबगर अटैच करें.
डीबग के ये टाइप उपलब्ध हैं:
ध्यान दें:
कंपाइलर, आपको चेतावनी वाला यह मैसेज दिख सकता है:This function was
compiled with optimizations enabled. Some debugger features may not be
available
. ऑप्टिमाइज़ेशन फ़्लैग का इस्तेमाल करने पर, कंपाइलर आपके
कंपाइल किए गए कोड में बदलाव करता है, ताकि वह ज़्यादा बेहतर तरीके से काम कर सके. इससे डीबगर
अचानक या गलत जानकारी की शिकायत करें, क्योंकि यह
डीबगर, ताकि ऑप्टिमाइज़ किए गए कंपाइल किए गए कोड को वापस ओरिजनल सोर्स कोड से मैप किया जा सके.
इस वजह से, आपको डीबग करते समय कंपाइलर ऑप्टिमाइज़ेशन को बंद कर देना चाहिए
आपका नेटिव कोड.
सिस्टम लॉग का इस्तेमाल करना
अपने ऐप्लिकेशन को डीबग करते समय, सिस्टम लॉग में सिस्टम मैसेज दिखते हैं. इन मैसेज में, डिवाइस पर चल रहे ऐप्लिकेशन की जानकारी शामिल होती है. अगर आपको अपने ऐप्लिकेशन को डीबग करने के लिए, सिस्टम लॉग का इस्तेमाल करना है, तो पक्का करें कि आपका कोड लॉग मैसेज लिखे और ऐप्लिकेशन के डेवलपमेंट के दौरान, अपवादों के लिए स्टैक ट्रैक को प्रिंट करे.
अपने कोड में लॉग मैसेज लिखें
अपने कोड में लॉग मैसेज लिखने के लिए,
Log
क्लास का इस्तेमाल करें. लॉग मैसेज से, आपको ऐप्लिकेशन के साथ इंटरैक्ट करने के दौरान, सिस्टम डीबग आउटपुट इकट्ठा करके, ऐप्लिकेशन के फ़्लो को समझने में मदद मिलती है. लॉग मैसेज से यह भी पता चल सकता है कि आपके ऐप्लिकेशन का कौनसा हिस्सा काम नहीं कर रहा है. लॉगिंग के बारे में ज़्यादा जानने के लिए,
Logcat की मदद से लॉग लिखना और देखना लेख पढ़ें.
इस उदाहरण में, लॉग मैसेज को जोड़कर यह पता लगाने का तरीका बताया गया है कि पिछली स्थिति क्या थी आपकी गतिविधि के शुरू होने पर, जानकारी उपलब्ध होती है:
import android.util.Log ... class MyActivity : Activity() { ... override fun onCreate(savedInstanceState: Bundle?) { ... if (savedInstanceState != null) { Log.d(TAG, "onCreate() Restoring previous state") /* restore state */ } else { Log.d(TAG, "onCreate() No saved state available") /* initialize app */ } ... } ... companion object { private val TAG: String = MyActivity::class.java.simpleName ... } }
import android.util.Log; ... public class MyActivity extends Activity { private static final String TAG = MyActivity.class.getSimpleName(); ... @Override public void onCreate(Bundle savedInstanceState) { ... if (savedInstanceState != null) { Log.d(TAG, "onCreate() Restoring previous state"); /* restore state */ } else { Log.d(TAG, "onCreate() No saved state available"); /* initialize app */ } ... } }
डेवलपमेंट के दौरान, आपका कोड अपवादों को भी पकड़ सकता है और सिस्टम लॉग में स्टैक ट्रेस लिख सकता है:
fun someOtherMethod() { try { ... } catch (e : SomeException) { Log.d(TAG, "someOtherMethod()", e) } }
void someOtherMethod() { try { ... } catch (SomeException e) { Log.d(TAG, "someOtherMethod()", e); } }
ध्यान दें: जब आपका ऐप्लिकेशन पब्लिश करने के लिए तैयार हो, तो अपने कोड से डीबग लॉग मैसेज और स्टैक ट्रेस प्रिंट कॉल हटाएं. ऐसा करने के लिए, DEBUG
फ़्लैग सेट करें और डीबग लॉग मैसेज को शर्तों वाले स्टेटमेंट में डालें.
सिस्टम लॉग देखना
लॉगकैट विंडो में, डीबग और अन्य सिस्टम मैसेज को देखा और फ़िल्टर किया जा सकता है, जैसा कि यहां दिखाया गया है
चौथी इमेज में दिखाया गया है. उदाहरण के लिए, कचरा इकट्ठा होने पर आपको मैसेज दिख सकते हैं. इसके अलावा,
आप
Log
क्लास.
Logcat का इस्तेमाल करने के लिए, डीबग करना शुरू करें. इसके बाद, Logcat टैब चुनें.

Logcat और उसे फ़िल्टर करने के विकल्पों की जानकारी के लिए, देखें Logcat की मदद से लॉग लिखें और देखें.
ब्रेकपॉइंट के साथ काम करना
Android Studio ऐसे ब्रेकपॉइंट की सुविधा देता है जो अलग-अलग डीबगिंग कार्रवाइयों को ट्रिगर करें. ब्रेकपॉइंट कई तरह के होते हैं:
आपके पास कंडिशनल ब्रेकपॉइंट सेट करने का विकल्प है. ऐसा करने पर, एक्ज़ीक्यूशन सिर्फ़ कुछ शर्तों के होने पर ही निलंबित होगा लक्ष्य तय होते हैं. लॉग इन करने के लिए ब्रेकपॉइंट भी सेट किए जा सकते हैं, जो निलंबित किए बिना Logcat पर लिखते हैं लागू करता है. इससे लॉग स्टेटमेंट से आपके कोड में होने वाली गड़बड़ियों से बचा जा सकता है.
लाइन ब्रेकपॉइंट जोड़ने के लिए, यह तरीका अपनाएं:
ब्रेकपॉइंट सेट करने पर, लाइन के बगल में एक लाल बिंदु दिखता है, जैसा कि पांचवीं इमेज में दिखाया गया है.

जब आपका कोड ब्रेकपॉइंट पर पहुंचता है, तो Android Studio आपके ऐप्लिकेशन के चलने को रोक देता है.
ऐप्लिकेशन की स्थिति की पहचान करने के लिए, डीबगर टैब में मौजूद टूल का इस्तेमाल करें:
अगर आपके प्रोजेक्ट में किसी भी नेटिव कोड का इस्तेमाल होता है, तो डिफ़ॉल्ट रूप से 'अपने-आप डीबग करें' टाइप यह आपके ऐप्लिकेशन में Java डीबगर और एलएलडीबी, दोनों को दो अलग-अलग प्रोसेस. ऐप्लिकेशन को रीस्टार्ट किए बिना या सेटिंग में बदलाव किए बिना, Java और C/C++ ब्रेकपॉइंट की जांच के बीच स्विच किया जा सकता है.
ध्यान दें: Android Studio आपके C या C++ कोड में ब्रेकपॉइंट का पता लगा सके, इसके लिए, आपको LLDB के साथ काम करने वाले डीबग टाइप का इस्तेमाल करना होगा. जैसे, अपने-आप पता लगाना, नेटिव या ड्यूअल. डीबग कॉन्फ़िगरेशन में बदलाव करके, Android Studio में इस्तेमाल होने वाले डीबग टाइप को बदला जा सकता है. अलग-अलग तरह के डीबग के बारे में ज़्यादा जानने के लिए, अलग-अलग तरह के डीबग इस्तेमाल करने के बारे में बताने वाला सेक्शन पढ़ें.
जब Android Studio आपके ऐप्लिकेशन को टारगेट किए गए डिवाइस पर डिप्लॉय करता है, तो डीबग विंडो हर डीबगर प्रोसेस के लिए, एक टैब या डीबग सेशन व्यू के साथ खुलता है, जैसा कि दिखाया गया है छठी इमेज में दिखाया गया है.

C/C++ कोड को डीबग करते समय, वॉचपॉइंट नाम के खास ब्रेकपॉइंट भी सेट किए जा सकते हैं. ये ब्रेकपॉइंट, आपके ऐप्लिकेशन के किसी खास ब्लॉक के साथ इंटरैक्ट करने पर, ऐप्लिकेशन की प्रोसेस को निलंबित कर सकते हैं. इस बारे में ज़्यादा जानने के लिए, पढ़ें वॉचपॉइंट जोड़ने का तरीका बताने वाला सेक्शन.
ब्रेकपॉइंट देखना और कॉन्फ़िगर करना
सभी ब्रेकपॉइंट देखने और ब्रेकपॉइंट की सेटिंग कॉन्फ़िगर करने के लिए, डिबग विंडो में
ब्रेकपॉइंट देखें
पर क्लिक करें. ब्रेकपॉइंट विंडो दिखेगी, जैसा कि सातवीं इमेज में दिखाया गया है.

ब्रेकपॉइंट विंडो की मदद से, पैनल में मौजूद सूची में से हर ब्रेकपॉइंट को चालू या बंद किया जा सकता है. अगर कोई ब्रेकपॉइंट बंद है, तो Android Studio उस ब्रेकपॉइंट पर आपके ऐप्लिकेशन को रोकता नहीं है.
सूची में से कोई ब्रेकपॉइंट चुनें और उसकी सेटिंग कॉन्फ़िगर करें. किसी ब्रेकपॉइंट को पहली बार बंद करने के लिए कॉन्फ़िगर किया जा सकता है और किसी दूसरे ब्रेकपॉइंट पर पहुंचने के बाद, सिस्टम को उसे चालू करने के लिए कहा जा सकता है. यह भी कॉन्फ़िगर किया जा सकता है कि ब्रेकपॉइंट बंद होने के बाद, उसे बंद किया जाए या नहीं हिट. किसी भी अपवाद के लिए ब्रेकपॉइंट सेट करने के लिए, ब्रेकपॉइंट की सूची में अपवाद के लिए ब्रेकपॉइंट चुनें.
सभी ब्रेकपॉइंट को कुछ समय के लिए बंद करने के लिए, ब्रेकपॉइंट म्यूट करें पर क्लिक करें
डीबग विंडो. फिर से चालू करने के लिए, फिर से क्लिक करें.
विंडो फ़्रेम डीबग करें
डीबगर विंडो में, फ़्रेम पैनल की मदद से उस स्टैक फ़्रेम की जांच की जा सकती है जिसकी वजह से मौजूदा ब्रेकपॉइंट हिट हुआ है. इससे, आपको स्टैक फ़्रेम पर नेविगेट करने और उसकी जांच करने के साथ-साथ, अपने Android ऐप्लिकेशन में मौजूद थ्रेड की सूची की जांच करने में भी मदद मिलती है.
कोई थ्रेड चुनने के लिए, थ्रेड सिलेक्टर मेन्यू का इस्तेमाल करें और उसका स्टैक फ़्रेम देखें. एडिटर में सोर्स खोलने के लिए, फ़्रेम में मौजूद एलिमेंट पर क्लिक करें. आपके पास थ्रेड के प्रज़ेंटेशन को पसंद के मुताबिक बनाने और स्टैक फ़्रेम को एक्सपोर्ट करने का विकल्प भी होता है. इस बारे में फ़्रेम की जांच करने से जुड़ी गाइड में बताया गया है.
वैरिएबल की जांच करना
डीबगर विंडो में, वैरिएबल पैनल के ज़रिए वैरिएबल की जांच तब करता है, जब सिस्टम आपके ऐप्लिकेशन को ब्रेकपॉइंट पर रोकता है और फ़्रेम पैनल से कोई फ़्रेम चुनें. वैरिएबल पैनल भी की मदद से ऐड-हॉक एक्सप्रेशन का आकलन करने के लिए स्टैटिक तरीकों और/या जो चुने गए फ़्रेम के अंदर उपलब्ध होते हैं.
ऐप्लिकेशन के डीबग किए जाने के दौरान, ऑब्जेक्ट ट्री में एक्सप्रेशन जोड़ने के लिए:

इसके अलावा, अगर ऑब्जेक्ट ट्री में वह एक्सप्रेशन है जिसे आपको देखना है, तो इसे ट्री के सबसे ऊपर लगाएं, ताकि इसे देखे गए एक्सप्रेशन के तौर पर जोड़ा जा सके.
ब्रेकपॉइंट हिट होने या कोड में आगे बढ़ने पर, निगरानी में रखे गए एक्सप्रेशन अपडेट हो जाएंगे.
जिन एक्सप्रेशन का आकलन हो चुका है वे ऑब्जेक्ट ट्री में सबसे ऊपर तब तक दिखते रहेंगे, जब तक कि आप मैन्युअल रूप से किसी दूसरे एक्सप्रेशन का आकलन न कर दें या अपने कोड को सिलसिलेवार तरीके से न चला दें.
ऑब्जेक्ट ट्री से देखा गया एक्सप्रेशन हटाने के लिए, एक्सप्रेशन पर राइट क्लिक करें और फिर स्मार्टवॉच को हटाएं पर क्लिक करें.
वॉचपॉइंट जोड़ें
C/C++ कोड को डीबग करते समय, खास तरह के ब्रेकपॉइंट सेट किए जा सकते हैं. इन्हें वॉचपॉइंट कहा जाता है. ये ब्रेकपॉइंट, आपके ऐप्लिकेशन के मेमोरी के किसी खास ब्लॉक के साथ इंटरैक्ट करने पर, आपके ऐप्लिकेशन की प्रोसेस को निलंबित कर सकते हैं. उदाहरण के लिए, अगर मेमोरी के ब्लॉक पर दो पॉइंटर सेट करें और उसे एक वॉचपॉइंट असाइन करें. ऐसा करने के लिए, या तो पॉइंटर का इस्तेमाल करके, मेमोरी के उस ब्लॉक को ऐक्सेस किया जा सकता है. इससे वॉचपॉइंट ट्रिगर होता है.
Android Studio में, रनटाइम के दौरान वॉचपॉइंट बनाया जा सकता है. इसके लिए, एक विशिष्ट चर होता है, लेकिन LLDB मेमोरी जिसे सिस्टम उस वैरिएबल के लिए असाइन करता है, उस वैरिएबल को नहीं. यह, वॉच पैनल में वैरिएबल जोड़ने से अलग है. इससे, आपको वैरिएबल की वैल्यू देखने की सुविधा मिलती है. हालांकि, जब सिस्टम मेमोरी में वैल्यू को पढ़ता है या उसमें बदलाव करता है, तब ऐप्लिकेशन की प्रोसेस को निलंबित नहीं किया जा सकता.
ध्यान दें: जब आपके ऐप्लिकेशन की प्रोसेस, किसी फ़ंक्शन और सिस्टम से बाहर निकल जाती है यह मेमोरी से अपने लोकल वैरिएबल को डील करता है, तो आपको किसी उन वैरिएबल के लिए बनाए गए वॉचपॉइंट.
वॉचपॉइंट सेट करने के लिए, आपको ये शर्तें पूरी करनी होंगी:
ध्यान दें: ऐप्लिकेशन को 32-बिट एआरएम एबीआई की मदद से डीबग करते समय, वॉचपॉइंट जोड़ें या ऐप्लिकेशन पर कर्सर घुमाएं की जांच करने के लिए कोड के अंदर वैरिएबल के ऊपर तो उनकी वैल्यू क्रैश हो सकती है. वैकल्पिक हल के रूप में, 64-बिट ARM का उपयोग करके डीबग करें, x86, या x86_64 बाइनरी. इस समस्या को Android Studio के आने वाले वर्शन में ठीक कर दिया जाएगा.
ज़रूरी शर्तें पूरी करने पर, वॉचपॉइंट को इस तरह जोड़ा जा सकता है:
अपने सभी वॉचपॉइंट देखने और वॉचपॉइंट की सेटिंग कॉन्फ़िगर करने के लिए, डीबग विंडो में ब्रेकपॉइंट देखें
पर क्लिक करें. कॉन्टेंट बनाने
ब्रेकपॉइंट डायलॉग दिखाई देता है, जैसा कि 10 में दिखाया गया है.

वॉचपॉइंट जोड़ने के बाद, अपने ऐप्लिकेशन की प्रोसेस फिर से शुरू करने के लिए, डीबग विंडो में प्रोग्राम फिर से शुरू करें
पर क्लिक करें. डिफ़ॉल्ट रूप से, अगर आपका ऐप्लिकेशन उस मेमोरी को ऐक्सेस करने की कोशिश करता है जिसे आपने ऐक्सेस करने की कोशिश की है
ने एक वॉचपॉइंट सेट किया हो, तो Android सिस्टम आपके ऐप्लिकेशन की प्रोसेस को निलंबित कर देता है और
वॉचपॉइंट आइकॉन
, आपके ऐप्लिकेशन के कोड लाइन के बगल में दिखता है
अंतिम रूप से चलाया जाता है, जैसा कि इमेज 11 में दिखाया गया है.

रिसॉर्स वैल्यू का डिसप्ले फ़ॉर्मैट देखना और बदलना
डीबग मोड में, रिसॉर्स वैल्यू देखी जा सकती हैं. साथ ही, अपने Java या Kotlin कोड में वैरिएबल के लिए, डिसप्ले का कोई दूसरा फ़ॉर्मैट चुना जा सकता है. वैरिएबल टैब दिखने और कोई फ़्रेम चुनने के बाद, ये काम करें:
कस्टम फ़ॉर्मैट बनाने के लिए, यह तरीका अपनाएं: