विंस्कोप एक वेब टूल है जो उपयोगकर्ताओं को एनिमेशन और ट्रांज़िशन के दौरान और बाद में कई सिस्टम सेवाओं की स्थिति को रिकॉर्ड करने, दोबारा चलाने और विश्लेषण करने की सुविधा देता है। Winscope सभी प्रासंगिक सिस्टम सेवा स्थितियों को एक ट्रेस फ़ाइल में रिकॉर्ड करता है। ट्रेस फ़ाइल के साथ विंस्कोप यूआई का उपयोग करके, आप संक्रमण के माध्यम से रीप्ले, स्टेपिंग और डीबगिंग द्वारा, स्क्रीन रिकॉर्डिंग के साथ या उसके बिना, प्रत्येक एनीमेशन फ्रेम के लिए इन सेवाओं की स्थिति का निरीक्षण कर सकते हैं।
सिस्टम सेवाएँ जो ऐसे निशान उत्पन्न करती हैं जिन्हें विंस्कोप में लोड किया जा सकता है, वे इस प्रकार हैं:
- सरफेसफ्लिंगर
- विंडोमैनेजर
- डब्लूएमशेल
- आईएमई
- लांचर
विंसस्कोप ट्रेस व्यूअर चलाएँ
विंस्कोप ट्रेसिंग प्लेटफ़ॉर्म पर सेवाओं का हिस्सा है। यह अनुभाग विंस्कोप ट्रेस व्यूअर को डाउनलोड करने, बनाने और चलाने के लिए आवश्यक चरणों की रूपरेखा देता है।
विंस्कोप ट्रैसर चलाने के लिए अपने पीसी को सेट करने के लिए इन चरणों का पालन करें:
- एंड्रॉइड स्रोत डाउनलोड करें ।
विंस्कोप फ़ोल्डर पर नेविगेट करें:
cd development/tools/winscope
का उपयोग करके निर्भरताएँ स्थापित करें:
npm install
उपलब्ध आदेशों की सूची देखने के लिए, चलाएँ:
npm run
इसका उपयोग करके सभी उत्पाद और परीक्षण लक्ष्य बनाएं:
npm run build:all
Winscope का उपयोग करके चलाएँ:
npm run start
निशान कैप्चर करें
आप विंस्कोप के माध्यम से, या एंड्रॉइड डीबग ब्रिज (एडीबी) कमांड के माध्यम से डिवाइस पर निशान कैप्चर कर सकते हैं।
डिवाइस पर निशान कैप्चर करें
एनीमेशन समस्याओं के लिए बग फ़ाइल करते समय डेटा एकत्र करने के लिए डिवाइस पर निशान कैप्चर करें। सभी यूआई ट्रेस इस पद्धति से रिकॉर्ड किए जाते हैं, क्योंकि कॉन्फ़िगरेशन को अनुकूलित नहीं किया जा सकता है।
आपके Android डिवाइस पर:
- डेवलपर विकल्प सक्षम करें .
- डेवलपर विकल्प के अंतर्गत सिस्टम ट्रेसिंग का चयन करें।
- Winscope निशान एकत्र करें सक्षम करें।
- विविध के अंतर्गत:
- बग रिपोर्ट में रिकॉर्डिंग संलग्न करें सक्षम करें।
- त्वरित सेटिंग टाइल दिखाएँ सक्षम करें.
- उस स्थान पर नेविगेट करें जहां आपको बग को पुन: उत्पन्न करने की आवश्यकता है।
कैप्चर शुरू करने के लिए, त्वरित सेटिंग्स खोलें और रिकॉर्ड ट्रेस चुनें:
चित्र 1. रिकॉर्ड ट्रेस के साथ त्वरित सेटिंग मेनू।
बग को पुन: उत्पन्न करने के लिए केवल आवश्यक चरणों को निष्पादित करें।
कैप्चर रोकने के लिए, त्वरित सेटिंग्स खोलें और स्टॉप ट्रेसिंग चुनें।
जीमेल, ड्राइव, या बेटरबग जैसे सूचीबद्ध विकल्पों में से किसी एक का उपयोग करके कैप्चर किए गए लॉग को साझा करें।
Winscope के माध्यम से निशान कैप्चर करें
आप स्थानीय विकास और डिबगिंग के लिए विंस्कोप का उपयोग करके निशान कैप्चर कर सकते हैं। विंस्कोप एडीबी का उपयोग करता है, जो यूएसबी या वाई-फाई पर डिवाइस कनेक्शन का समर्थन करता है।
विंस्कोप पर:
ट्रेस एकत्रित करें स्क्रीन पर, ADB प्रॉक्सी पर क्लिक करें:
चित्र 2. विंस्कोप पर निशान कैप्चर करें।
सीधे अपने ब्राउज़र से निशान कैप्चर करने के लिए विंस्कोप एडीबी कनेक्ट प्रॉक्सी लॉन्च करें।
आदेश चलाएँ:
python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
कैप्चर शुरू करने के लिए, कलेक्ट ट्रेसेस स्क्रीन पर लक्ष्य और कॉन्फ़िगरेशन का चयन करें और स्टार्ट ट्रेस पर क्लिक करें:
चित्र 3. विंस्कोप पर निशान एकत्रित करें।
कैप्चर रोकने के लिए, एंड ट्रेस पर क्लिक करें:
चित्र 4. विंस्कोप पर अंतिम ट्रेस।
जैसे ही टूल विंस्कोप के यूआई पर निशान अपलोड करता है, फ़ेचिंग और पार्सिंग प्रोटो फाइल संदेश स्क्रीन पर दिखाई देते हैं।
Winscope का उपयोग करके राज्य डंप उत्पन्न करें
विंस्कोप का उपयोग करके एक स्टेट डंप लेने के लिए, कलेक्ट ट्रेसेस स्क्रीन पर डंप टैब चुनें और फिर डंप स्टेट पर क्लिक करें:
चित्र 5. विंस्कोप पर डंप स्थिति।
एडीबी कमांड के माध्यम से निशान कैप्चर करें
निम्नलिखित प्रत्येक ट्रेस के लिए adb shell
कमांड चलाने से पहले adb root
चलाएं। ट्रेस के अंत में, ट्रेस फ़ाइलें /data/misc/wmtrace
में उपलब्ध हैं। किसी डिवाइस से किसी फ़ाइल या निर्देशिका और उसकी उपनिर्देशिकाओं की प्रतिलिपि बनाने के लिए, किसी डिवाइस से फ़ाइलें कॉपी करें देखें। अधिक जानकारी के लिए एडीबी देखें।
विंडोमैनेजर ट्रेस
विंडोमैनेजर ट्रेस कैप्चर करने के लिए:
ट्रेस सक्षम करें:
adb shell wm tracing start
ट्रेस अक्षम करें:
adb shell wm tracing stop
ट्रेस कैप्चर चलाते समय लॉगिंग डेटा को फ़ाइल में सहेजें:
adb shell wm tracing save-for-bugreport
प्रति फ़्रेम एक बार लॉग ट्रेस करें:
adb shell wm tracing frame
प्रत्येक लेन-देन लॉग करें:
adb shell wm tracing transaction
अधिकतम लॉग आकार सेट करें (KB में):
adb shell wm tracing size
प्रिंट ट्रेस स्थिति:
adb shell wm tracing status
लॉग स्तर को
critical
(केवल कम जानकारी वाली दृश्यमान विंडो),trim
(कम जानकारी वाली सभी विंडो), याall
(सभी विंडो और जानकारी) पर सेट करें:adb shell wm tracing level
प्रोटोलॉग
प्रोटोलॉग सिस्टम के लिए निम्नलिखित कमांड का उपयोग किया जाता है।
system_server
प्रक्रिया में:
प्रोटोलॉग प्रारंभ करें:
adb shell cmd window logging start
प्रोटोलॉग बंद करें:
adb shell cmd window logging stop
दिए गए लॉग समूहों के लिए प्रोटोलॉग सक्षम करें:
adb shell cmd window logging enable [group...]
दिए गए लॉग समूहों के लिए प्रोटोलॉग अक्षम करें:
adb shell cmd window logging disable [group...]
दिए गए लॉग समूहों के लिए लॉगकैट लॉगिंग सक्षम करें:
adb shell cmd window logging enable-text [group...]
दिए गए लॉग समूहों के लिए लॉगकैट लॉगिंग अक्षम करें:
adb shell cmd window logging disable-text [group...]
डब्लूएमशेल में:
प्रोटोलॉग प्रारंभ करें:
adb shell dumpsys activity service SystemUIService WMShell
संक्रमण अनुरेखण
ट्रांज़िशन ट्रेसिंग के लिए निम्नलिखित कमांड का उपयोग किया जाता है:
system_server
प्रक्रिया में:
एक ट्रेस प्रारंभ करें:
adb shell cmd window shell tracing start
एक निशान रोकें:
adb shell cmd window shell tracing stop
WMShell में एक ट्रेस प्रारंभ करें:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing start
WMShell में एक ट्रेस रोकें:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing stop
इनपुट मेथड संपादक
इनपुट मेथड एडिटर (IME) ट्रेसिंग के लिए निम्नलिखित कमांड का उपयोग किया जाता है:
इनपुट मेथड (IM) क्लाइंट, इनपुट मेथड सर्विस (IMS), और इनपुट मेथड मैनेजमेंट सर्विस (IMMS) के लिए IME ट्रेसिंग प्रारंभ करें:
adb shell ime tracing start
IME क्लाइंट, IMS और IMMS का पता लगाना प्रारंभ करें:
adb shell ime tracing stop
सरफेसफ्लिंगर परतें
सरफेसफ्लिंगर लेयर ट्रेसिंग कैप्चर के लिए पर्फ़ेटो ट्रेस का उपयोग करता है। कॉन्फ़िगरेशन जानकारी के लिए ट्रेस कॉन्फ़िगरेशन देखें।
सरफेसफ्लिंगर लेयर ट्रेसिंग के लिए कॉन्फ़िगरेशन का निम्नलिखित उदाहरण देखें:
unique_session_name: "surfaceflinger_layers_active"
buffers: {
size_kb: 63488
fill_policy: RING_BUFFER
}
data_sources: {
config {
name: "android.surfaceflinger.layers"
surfaceflinger_layers_config: {
mode: MODE_ACTIVE
trace_flags: TRACE_FLAG_INPUT
trace_flags: TRACE_FLAG_COMPOSITION
trace_flags: TRACE_FLAG_HWC
trace_flags: TRACE_FLAG_BUFFERS
trace_flags: TRACE_FLAG_VIRTUAL_DISPLAYS
}
}
}
सरफेसफ्लिंगर परतों के लिए ट्रेसिंग उत्पन्न करने के लिए निम्नलिखित उदाहरण कमांड देखें:
adb shell -t perfetto \
-c - --txt \
-o /data/misc/perfetto-traces/trace \
सरफेसफ्लिंगर लेनदेन
सरफेसफ्लिंगर लेनदेन ट्रेसिंग कैप्चर के लिए पर्फ़ेटो ट्रेस का उपयोग करता है। कॉन्फ़िगरेशन जानकारी के लिए ट्रेस कॉन्फ़िगरेशन देखें।
सरफेसफ्लिंगर सक्रिय ट्रेसिंग के लिए पर्फ़ेटो कॉन्फ़िगरेशन का निम्नलिखित उदाहरण देखें:
unique_session_name: "surfaceflinger_transactions_active"
buffers: {
size_kb: 1024
fill_policy: RING_BUFFER
}
data_sources: {
config {
name: "android.surfaceflinger.transactions"
surfaceflinger_transactions_config: {
mode: MODE_ACTIVE
}
}
}
write_into_file: true
file_write_period_ms: 100
सरफेसफ्लिंगर निरंतर ट्रेसिंग के लिए पर्फ़ेटो कॉन्फ़िगरेशन का निम्नलिखित उदाहरण देखें:
unique_session_name: "surfaceflinger_transactions_continuous"
buffers: {
size_kb: 1024
fill_policy: RING_BUFFER
}
data_sources: {
config {
name: "android.surfaceflinger.transactions"
surfaceflinger_transactions_config: {
mode: MODE_CONTINUOUS
}
}
}
सरफेसफ्लिंगर लेनदेन के लिए ट्रेसिंग उत्पन्न करने के लिए निम्नलिखित उदाहरण कमांड देखें:
adb shell perfetto \
-c - --txt \
-o /data/misc/perfetto-traces/trace \
एडीबी का उपयोग करके राज्य डंप उत्पन्न करें
विंस्कोप बग रिपोर्ट से विंडोमैनेजर और सर्फेसफ्लिंगर स्थितियों का एक स्नैपशॉट पढ़ता है। बग रिपोर्ट राज्यों को proto
फ़ोल्डर के भीतर अलग प्रोटो फ़ाइलों के रूप में संग्रहीत करती है। एडीबी का उपयोग करके राज्य डंप उत्पन्न करने के लिए, निम्नलिखित कमांड चलाएँ।
विंडोमैनेजर के लिए:
adb exec-out dumpsys window --proto > window_dump.winscope
सरफेसफ्लिंगर के लिए:
adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope
निशानों का विश्लेषण करें
एनीमेशन समस्याओं का कारण बनने वाली क्षणिक और अमान्य स्थितियों को डीबग करने के लिए, विंस्कोप विभिन्न ट्रेस फ़ाइलों को एकत्रित करता है, फ़्रेम और टाइमलाइन पर खोज और विज़ुअलाइज़ेशन प्रदान करता है, और सुसंगत तरीके से प्रोटोबफ़ संदेश प्रस्तुत करता है। विंस्कोप में निशानों का विश्लेषण करने से बग की सटीक परत, फ्रेम और स्थिति की पहचान करने में मदद मिलती है।
विनस्कोप का प्रयोग करें
जब आप निशानों को कैप्चर कर लें , तो Winscope पर निशानों का विश्लेषण करें:
दाईं ओर पैनल का उपयोग करके अपने सहेजे गए निशान अपलोड करें। आप अपलोड किए गए निशान हटा सकते हैं या अधिक निशान अपलोड कर सकते हैं।
चित्र 6. विंस्कोप पर अंश अपलोड करें।
अपलोड किए गए निशानों को देखने के लिए निशान देखें पर क्लिक करें। प्रत्येक ट्रेस के लिए टैब विंडो के शीर्ष पैनल पर दिखाई देते हैं। यदि अपलोड की गई फ़ाइल में प्रासंगिक निशान हैं, तो स्क्रीन पर स्क्रीन रिकॉर्डिंग ट्रेस का एक फ़्लोटिंग दृश्य दिखाई देगा।
चित्र 7. विंस्कोप पर निशान देखें।
नाम बदलने के लिए विंडो के सबसे ऊपरी पैनल पर यूआई का उपयोग करें और अपना अपलोड किया गया ट्रेस डाउनलोड करें या एक नया अपलोड करने के लिए.
विंडो के निचले पैनल पर टाइम स्लाइडर टूल का उपयोग करके समय के निशानों के माध्यम से नेविगेट करें। अतिरिक्त समय नेविगेशन के लिए, निम्नलिखित सुविधाओं का उपयोग करें, जैसा चित्र 8 में दिखाया गया है:
- किसी विशेष समय या घटना पर नेविगेट करने के लिए, कर्सर (समय स्लाइडर), या बाईं ओर का उपयोग करें और सही समय प्रदर्शन बॉक्स (निचले बाएँ कोने) में तीर, या आपके कीबोर्ड पर बाएँ और दाएँ तीर।
- टाइमलाइन पर चयनित रंग-कोडित निशान प्रदर्शित करने के लिए, ड्रॉप-डाउन मेनू (टाइम स्लाइडर के बाईं ओर) का उपयोग करें। डिफ़ॉल्ट रूप से, ट्रेस टैब का उपयोग करके देखे गए अंतिम तीन निशान टाइमलाइन पर प्रदर्शित होते हैं।
- अपलोड किए गए सभी निशानों के विस्तृत दृश्य के लिए, ज़ूम इन का उपयोग करें या ज़ूम आउट करें टूल (टाइम स्लाइडर के नीचे), या अपने कीबोर्ड पर स्क्रॉल करें। ज़ूम स्तर को रीसेट करने के लिए रीसेट बटन का उपयोग करें।
- समय के साथ ट्रेस वितरण के विस्तृत दृश्य के लिए, ऊपर तीर पर क्लिक करें (निचला दायां कोना)।
चित्र 8. विंस्कोप पर समय नेविगेशन।
विस्तारित दृश्य (चित्र 9) में, बेहतर निरीक्षण के लिए विशिष्ट समय-सीमा का चयन करें और ज़ूम इन करें:
चित्र 9. विंस्कोप पर विस्तारित समयरेखा।
निशानों की जांच करने के लिए, आप स्क्रीन रिकॉर्डिंग के साथ डिवाइस की स्थिति देख सकते हैं। किसी विशेष ट्रेस की जांच करने के लिए, टूल के शीर्ष पैनल पर संबंधित ट्रेस टैब पर क्लिक करें।
सरफेस फ़्लिंगर ट्रेस के लिए, तीन पैनल एक निश्चित समय अवधि में ट्रेस के अलग-अलग दृश्य प्रदर्शित करते हैं, जैसा चित्र 10 में दिखाया गया है:
चित्र 10. विंस्कोप पर सतही फ़्लिंगर ट्रेस।
परतें दृश्य: आयताकार ओवरले में परतों का एक 3डी दृश्य। निम्नलिखित यूआई तत्व ग्राफिकल तत्वों को उनकी स्थिति, आकार, परिवर्तन और जेड-ऑर्डर के संदर्भ में प्रस्तुत करने के लिए आयतों को समायोजित करते हैं:
- रोटेशन स्लाइडर (परत दृश्य के ऊपर बाईं ओर) चयनित कोणों पर देखने के लिए स्तरित आयतों को घुमाता है।
- स्पेसिंग स्लाइडर (परत दृश्य के शीर्ष दाईं ओर) चयनित समग्र दृश्य बनाने के लिए परतों के बीच की दूरी को समायोजित करता है।
- ज़ूम टूल (लेयर्स व्यू के ऊपर दाईं ओर) ज़ूम इन करते हैं और ज़ूम आउट करें बेहतर निरीक्षण के लिए परतों में।
- रीसेट बटन (परतें दृश्य के शीर्ष दाईं ओर) कैमरा सेटिंग्स को मूल दृश्य में पुनर्स्थापित करता है।
- बेहतर ज़ूमिंग की सुविधा के लिए आयतों को खींचें।
पदानुक्रम दृश्य: परतों का एक पूर्ण पदानुक्रम।
- केवल दृश्यमान (पदानुक्रम दृश्य के शीर्ष दाईं ओर), चयनित होने पर, स्क्रीन पर तत्वों को देखने में मदद करने के लिए पदानुक्रम से अदृश्य परतों को छुपाता है।
- फ़्लैट (पदानुक्रम दृश्य के शीर्ष दाईं ओर), चयनित होने पर, पदानुक्रम को परतों की एक चपटी सूची के रूप में दिखाता है।
- शो डिफ (पदानुक्रम दृश्य के ऊपर बाईं ओर) केवल तभी चुना जाता है जब कोई राज्य परिवर्तन होता है। चयनित होने पर, टूल वर्तमान स्थिति की तुलना पिछली स्थिति से करता है। एक नया तत्व हरे रंग में हाइलाइट किया गया है, एक हटाए गए तत्व को लाल रंग में हाइलाइट किया गया है, और एक संशोधित तत्व नीले रंग में हाइलाइट किया गया है।
गुण दृश्य: चयनित परत के गुण। गुण दृश्य के शीर्ष पैनल में केवल प्रमुख गुणों, जैसे दृश्यता , ज्यामिति और बफर के बारे में जानकारी होती है। गुण दृश्य के निचले पैनल में सभी संपत्तियों का प्रोटो डंप होता है।
- शो डिफ चेकबॉक्स (गुण दृश्य के ऊपर बाईं ओर) पदानुक्रम दृश्य के समान व्यवहार करता है।
- डिफ़ॉल्ट दिखाएं (गुण दृश्य के ऊपर बाईं ओर), चयनित होने पर, प्रोटो डंप पर डिफ़ॉल्ट प्रोटो मान प्रदर्शित करता है। डिफ़ॉल्ट रूप से, ये मान प्रोटो डंप में सूचीबद्ध नहीं हैं। डिफ़ॉल्ट प्रोटो मान प्रोटो फ़ील्ड परिभाषा से लिए गए हैं। यदि किसी प्रोटो फ़ील्ड में कोई गैर-शून्य डिफ़ॉल्ट मान सेट नहीं है, तो दिखाए गए डिफ़ॉल्ट प्रोटो मान हैं:
- स्ट्रिंग्स: शून्य
- संख्याएँ: 0
- बूलियन मान: ग़लत
- वस्तुएँ: शून्य
तीन दृश्यों और स्क्रीन रिकॉर्डिंग के बीच चयन सिंक्रनाइज़ होता है, यानी, जब आप समय में एक अलग बिंदु पर नेविगेट करते हैं तो सभी निशान सिंक्रनाइज़ रूप से अपडेट होते हैं। किसी परत के गुण देखने के लिए, पदानुक्रम दृश्य में उस पर क्लिक करके या गुण दृश्य में संबंधित आयत पर क्लिक करके परत का चयन करें। एक बैंगनी आयत इंगित करता है कि इस परत से एक दृश्य ट्रेस जुड़ा हुआ है। बैंगनी परत पर डबल क्लिक करने पर, यूआई प्रासंगिक दृश्य ट्रेस टैब में बदलने के लिए नेविगेट करता है।
विंडो मैनेजर ट्रेस के लिए, तीन पैनल एक निश्चित समय अवधि में ट्रेस के अलग-अलग दृश्य प्रदर्शित करते हैं, जैसा चित्र 11 में दिखाया गया है:
- विंडोज़ दृश्य: परतों का एक 3डी दृश्य।
- पदानुक्रम दृश्य: परतों का एक पूर्ण पदानुक्रम।
- गुण दृश्य में सभी संपत्तियों का प्रोटो डंप शामिल है।
तीन दृश्यों और स्क्रीन रिकॉर्डिंग के बीच चयन सिंक्रनाइज़ होता है, यानी, जब आप समय में एक अलग बिंदु पर नेविगेट करते हैं तो सभी निशान सिंक्रनाइज़ रूप से अपडेट होते हैं।
चित्र 11. विनस्कोप पर विंडो मैनेजर ट्रेस।
लेन-देन के निशान के लिए, सरफेस फ़्लिंगर और विंडो मैनेजर के बीच के लेन-देन को तालिका प्रारूप में प्रस्तुत किया जाता है, जो प्रदर्शित आईडी, प्रकार और पाठ के साथ-साथ एक गुण दृश्य द्वारा खोजा जा सकता है जो प्रोटो डंप दिखाता है। दो दृश्यों और स्क्रीन रिकॉर्डिंग के बीच चयन सिंक्रनाइज़ है:
चित्र 12. विंस्कोप पर लेन-देन का पता चलता है।
प्रोटोलॉग ट्रेस के लिए, जानकारी एक तालिका प्रारूप में प्रस्तुत की जाती है, जिसे टैग, स्रोत फ़ाइलों और पाठ द्वारा खोजा जा सकता है:
चित्र 13. विंस्कोप पर प्रोटोलॉग ट्रेस।
ट्रांज़िशन ट्रेस के लिए, चयनित ट्रांज़िशन के गुणों के साथ आईडी, प्रकार, भेजने का समय, अवधि और स्थिति के साथ ट्रांज़िशन की एक सूची प्रदर्शित की जाती है:
चित्र 14. विंस्कोप पर ट्रांज़िशन ट्रेस।