"संदेश भेजे गए" और "संदेश प्राप्त" कॉलम के साथ किस तरह के "संदेश" गतिविधि मॉनिटर ट्रैक करते हैं?


9

OS X पर गतिविधि मॉनिटर में, प्रक्रिया सूची दृश्य में अतिरिक्त कॉलम जोड़ना संभव है। उस सूची में उपलब्ध दो कॉलम क्रमशः "संदेश भेजे गए" और "संदेश प्राप्त" हैं, जो क्रमशः "भेजे गए संदेश" और "आरसीवीडी एमएसजी" के रूप में दिखाई देते हैं। गवाह:

"मॉनिटर किए गए संदेश" और "आरसीवीडी एमएसजी" कॉलम दिखा रही गतिविधि मॉनिटर विंडो का भाग

गतिविधि मॉनिटर किस तरह के "संदेशों" का जिक्र है?

जब मैंने "संदेश" देखा, तो मैंने सबसे पहले ऑब्जेक्टिव-सी "संदेशों" के बारे में सोचा, जो कि भेजे जाते हैं objc_msgSend(), लेकिन मैं यह नहीं देख सकता कि उन ऑपरेटिंग सिस्टम द्वारा कैसे ट्रैक किया जाएगा क्योंकि उन संदेशों में से अधिकांश प्रक्रिया के लिए आंतरिक होगा। । डिबगर संलग्न होने पर उन प्रकार के संदेशों को ट्रैक कर सकता है, लेकिन मैं ओएस को हर समय ऐसा करते हुए नहीं देख सकता - बहुत अधिक उपरि।

इसलिए मैं अनुमान लगा रहा हूं कि वे भारी-भरकम संदेश हैं। क्या वे प्रक्रियाओं के बीच आरपीसी का एक रूप हैं? या, क्या उन संदेशों को उपयोगकर्ता-भूमि से कर्नेल में कॉल किया जाता है? निश्चित संदर्भों की तलाश। धन्यवाद।

जवाबों:


7

उन नंबरों का मिलान संदेशों में / बाहर की गिनती से मेल खाता है, इसलिए आप उन्हें objc_msgSend काउंट के रूप में व्याख्या नहीं करने में सही प्रतीत होते हैं।

आप इंस्ट्रूमेंट्स (स्वतंत्र रूप से डाउनलोड करने योग्य Xcode टूसेट का हिस्सा) को फायर करके उच्च स्तर के मैसेज काउंट के बारे में अधिक जान सकते हैं और एक विशिष्ट एप्लिकेशन में खुदाई करके देख सकते हैं कि क्या संदेश भेजे जा रहे हैं और कब।

Xcode इंस्ट्रूमेंट्स स्क्रीन शॉट

यह सभी आवंटन के साथ-साथ ObjC से संबंधित आवंटन को फ़िल्टर कर सकता है और आप केवल संदेश भेजने की तुलना में बहुत निचले स्तर के विवरण में खुदाई कर सकते हैं। एक्सॉन का हिस्सा होने वाली विहित प्रलेखन आपको इन आंकड़ों की समझ बनाने में मदद करेगा और वे गतिविधि मॉनिटर से कैसे संबंधित होंगे।

विशेष रूप से, के लिए खोज NSObjCMessageLoggingEnabledऔर objc_msgSendउपकरण संदर्भ प्रलेखन की गाइड भाग ObjC मायने रखता है पर प्राप्त करने के लिए - मैक ओएस एक्स डिबगिंग जादू में।

mach messageXcode में खोजें और मच मैसेज कतार विवरणों के लिए कर्नेल प्रोग्रामिंग गाइड के IPC / Message Queues सेक्शन को देखें और जो उन्हें बनाता है। वे बहुत निचले स्तर के IPC कर्नेल ट्रैफ़िक हैं, जैसा आपने अधिभूत किया है।

आप शायद इसे developer.apple.com पर भी पा सकते हैं, लेकिन Xcode के भीतर स्थानीय दस्तावेज होने के कई फायदे हैं।


1
धन्यवाद - लेकिन यह अभी तक स्पष्ट नहीं है। मुझे तीन चीजों पर शक हुआ। क्या आपको पहली चीज़ पर संदेह होने की पुष्टि करने का मतलब है, यानी सभी प्रक्रियाओं के लिए objc_msgSend()कॉल ट्रैक किए गए हैं , या भारी-भरकम संदेशों का अनुमान है?
क्रिस डब्ल्यू। रीया

1
मैंने सोचा था कि वे objc_msgSend मायने रखते थे, लेकिन अब मैं देख रहा हूं कि मैं गलत हूं। जब आप गतिविधि मॉनीटर के भीतर से किसी प्रक्रिया का चयन करते हैं, तो वे पूरी तरह से उपलब्ध मच मैसेज काउंट को मैप करते हैं। मैं अपने उत्तर को अधिक सही और कम गलत होने के लिए संशोधित करूंगा।
bmike

धन्यवाद! कर्नेल प्रोग्रामिंग गाइड के लिए सूचक विशेष रूप से सहायक है। इसकी जानकारी नहीं थी।
क्रिस डब्ल्यू। री।

हाँ - बहुत अद्भुत दस्तावेज है, और भले ही मुझे पता है कि इसे कैसे और क्यों डेवलपर.apple.com पर डाला गया है, मैं इसे उपयोग करने में बहुत प्रभावी हूं और इसे खोजने के लिए जब मैं दस्तावेजों को ब्राउज़ करने के लिए Xcode का उपयोग करता हूं।
bmike
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.