Etkinlik Monitörü “Gönderilen Mesajlar” ve “Alınan Mesajlar” sütunlarıyla ne tür “mesajlar” izler?


9

OS X'teki Etkinlik İzleyicisi'nde, işlem listesi görünümüne ek sütunlar eklemek mümkündür. Bu listede bulunan iki sütun, sırasıyla "Gönderilmiş Mesajlar" ve "Rcvd Mesajları" olarak gösterilen "Gönderilen Mesajlar" ve "Alınan Mesajlar" dır. Tanık:

"Gönderilen Mesajlar" ve "Rcvd Mesajlar" sütunlarını gösteren Etkinlik Monitörü penceresinin bölümü

Etkinlik Monitörü ne tür "mesajlar" dan bahsediyor?

"Mesaj" ı gördüğümde, ilk başta gönderilen Objective-C "mesajları" nı düşündüm objc_msgSend(), ancak bu mesajların çoğu sürecin kendi içinde olacağından bunların işletim sistemi tarafından nasıl izleneceğini göremiyorum. . Bir hata ayıklayıcı, bağlandığında bu tür iletileri izleyebilir, ancak işletim sisteminin her zaman bunu gerçekleştirdiğini göremiyorum - çok yüksek yük.

Yani bunların daha ağır mesajlar olduğunu tahmin ediyorum. Süreçler arasında bir RPC biçimi mi? Yoksa bu mesajlar kullanıcı alanından çekirdeğe mi çağrılıyor? Kesin referanslar aramak. Teşekkür ederim.

Yanıtlar:


7

Bu sayılar Mach iletileri giriş / çıkış sayılarıyla eşleşir, bu nedenle bunları objc_msgSend sayıları olarak yorumlamamakta doğru görünüyorsunuz.

Cihazları (serbestçe indirilebilir Xcode araç setinin bir parçası ) çalıştırarak ve hangi mesajların ne zaman ve ne zaman gönderildiğini görmek için belirli bir uygulamayı inceleyerek daha üst düzey mesaj sayıları hakkında daha fazla bilgi edinebilirsiniz .

Xcode Instruments ekran görüntüsü

ObjC ile ilgili tüm tahsislerin yanı sıra tahsisleri de filtreleyebilir ve sadece mesaj gönderme sayılarından çok daha düşük seviye detaylarına girebilirsiniz. Xcode'un bir parçası olan kanonik belgeler, bu istatistikleri ve bunların Etkinlik Monitörü ile nasıl ilişkili olduğunu anlamanıza yardımcı olacaktır.

Özellikle, aramak NSObjCMessageLoggingEnabledve objc_msgSendMac OS X hata ayıklama Magic - Araçları Referans Belgeleri Kılavuzu bölümünü objc sayımları ulaşmak için.

Ara mach messageXcode ve IPC / Mesaj Kuyrukları bölüm için bakmak Kılavuzu Programlama Kernel mach ileti sırası detayları için ve onlara ne yapar. Tahmin ettiğiniz gibi çok daha düşük seviyeli IPC çekirdek trafiğidir.

Muhtemelen developer.apple.com'da da bulabilirsiniz, ancak Xcode içinden yerel belgelere sahip olmanın birçok avantajı vardır.


1
Teşekkürler - ama henüz net değil. Üç şeyden şüphelendim. Eğer, yani şüpheli ilk şey I onaylamak için kastettiniz objc_msgSend()aramalar edilir tüm işlemler için izlenen ya ağır ağırlıklı mesajları tahminde?
Chris W. Rea

1
Bunların objc_msgSend sayıları olduğunu düşündüm, ama şimdi yanıldığımı görüyorum. Etkinlik İzleyicisi'nden bir işlem seçtiğinizde kullanılabilir olan mach ileti sayılarıyla mükemmel şekilde eşleşir. Cevabımı daha doğru ve daha az yanlış olacak şekilde gözden geçireceğim.
bmike

Teşekkürler! Çekirdek Programlama Kılavuzu'na işaretçi özellikle yararlıdır. Farkında değildim.
Chris W. Rea

Evet - çok şaşırtıcı belgeler var ve geliştirici.apple.com'a nasıl ve neden konduğunu bilsem de, belgelere göz atmak için Xcode kullandığımda onu kullanmak ve bulmakta çok daha etkiliyim.
bmike
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.