การตรวจสอบกิจกรรมประเภทใดที่ติดตามด้วยคอลัมน์ "ข้อความที่ส่ง" และ "ข้อความที่ได้รับ"


9

ในการตรวจสอบกิจกรรมบน OS X เป็นไปได้ที่จะเพิ่มคอลัมน์เพิ่มเติมลงในมุมมองรายการกระบวนการ สองคอลัมน์ที่มีอยู่ในรายการนั้นคือ "Messages Sent" และ "Messages Received" ซึ่งแสดงเป็น "Sent Msgs" และ "Rcvd Msgs" ตามลำดับ พยาน:

ส่วนของหน้าต่างการตรวจสอบกิจกรรมแสดงคอลัมน์ "ส่งข้อความถึง" และ "Rcvd Msgs"

การตรวจสอบกิจกรรมหมายถึง "ข้อความ" ประเภทใด

เมื่อฉันเห็น "ข้อความ" ฉันคิดว่าตอนแรกของข้อความ "Objective-C" ที่ส่งมาด้วยobjc_msgSend()แต่ฉันไม่เห็นว่าระบบปฏิบัติการเหล่านั้นจะถูกติดตามอย่างไรเนื่องจากข้อความเหล่านั้นส่วนใหญ่จะเป็นกระบวนการภายในตัวเอง . ตัวดีบักอาจติดตามข้อความประเภทเหล่านี้เมื่อแนบ แต่ฉันไม่เห็นระบบปฏิบัติการทำอยู่ตลอดเวลา - ค่าใช้จ่ายสูงมาก

ดังนั้นฉันเดาว่าข้อความเหล่านั้นเป็นข้อความที่มีน้ำหนักมาก พวกเขาเป็นรูปแบบของ RPC ระหว่างกระบวนการหรือไม่? หรือข้อความเหล่านั้นโทรจากยูสเซอร์ลงสู่เคอร์เนลหรือไม่? ค้นหาข้อมูลอ้างอิงที่ชัดเจน ขอบคุณ.

คำตอบ:


7

ตัวเลขเหล่านั้นตรงกับจำนวนข้อความ Mach เข้า / ออกดังนั้นคุณจึงดูเหมือนว่าจะถูกต้องในการไม่ตีความหมายตามที่ objc_msgSend นับ

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการนับข้อความในระดับที่สูงขึ้นโดยการใช้เครื่องมือ (ส่วนหนึ่งของชุดเครื่องมือ Xcode ที่ดาวน์โหลดได้อย่างอิสระ) และขุดลงในแอปพลิเคชันเฉพาะเพื่อดูว่ามีการส่งข้อความใดและเมื่อใด

ภาพหน้าจอของ Xcode Instruments

มันสามารถกรองการจัดสรรทั้งหมดรวมถึงการจัดสรรที่เกี่ยวข้องกับ ObjC และคุณสามารถขุดลงในรายละเอียดระดับที่ต่ำกว่าการนับจำนวนการส่งข้อความ เอกสารที่เป็นที่ยอมรับซึ่งเป็นส่วนหนึ่งของ Xcode จะช่วยให้คุณเข้าใจถึงสถิติเหล่านี้และความสัมพันธ์กับการตรวจสอบกิจกรรม

โดยเฉพาะการค้นหาNSObjCMessageLoggingEnabledและobjc_msgSendในส่วนของ Magic Debugging Magic - คู่มือการใช้เครื่องมือ Mac OS X ของเอกสารอ้างอิงเพื่อรับจำนวน objC

ค้นหาmach messageใน Xcode และค้นหาส่วน IPC / Message Queues ของคู่มือการเขียนโปรแกรมเคอร์เนลเพื่อดูรายละเอียดคิวข้อความจักรและสิ่งที่ทำให้พวกเขา พวกเขาเป็นปริมาณการใช้เคอร์เนล IPC ที่ต่ำกว่ามากตามที่คุณคาดการณ์ไว้

คุณอาจพบได้ใน developer.apple.com เช่นกัน แต่การมีเอกสารในตัวเครื่องจากภายใน Xcode มีข้อดีหลายประการ


1
ขอบคุณ - แต่มันยังไม่ชัด ฉันสงสัยสามสิ่ง คุณหมายถึงการยืนยันสิ่งแรกที่ฉันสงสัยคือมีการติดตามการobjc_msgSend()โทรสำหรับทุกกระบวนการหรือข้อความที่มีน้ำหนักมากเดาได้หรือไม่
Chris W. Rea

1
ฉันคิดว่าสิ่งเหล่านั้น objc_msg ส่งนับ แต่ตอนนี้ฉันเห็นว่าฉันผิด พวกเขาแมปอย่างสมบูรณ์กับข้อความจักรจะมีนับเมื่อคุณเลือกกระบวนการจากภายในการตรวจสอบกิจกรรม ฉันจะแก้ไขคำตอบของฉันให้ถูกต้องมากขึ้นและผิดน้อยลง
bmike

ขอบคุณ! ตัวชี้ไปยังคู่มือการเขียนโปรแกรมเคอร์เนลมีประโยชน์อย่างยิ่ง ไม่ได้ตระหนักถึงมัน
Chris W. Rea

ใช่ - มีเอกสารที่น่าทึ่งมากมายและแม้ว่าฉันจะรู้ได้อย่างไรว่าทำไมมันถึงได้วางบน developer.apple.com แต่ฉันก็มีประสิทธิภาพมากขึ้นในการใช้มันและค้นหามันเมื่อฉันใช้ Xcode เพื่อเรียกดูเอกสาร
bmike
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.