سؤال

هل توفر بيئة تطوير Xcode الخاصة بشركة Apple أي أدوات لاكتشاف تسرب الذاكرة؟

أنا مهتم بشكل خاص بالأدوات التي تنطبق على iPhone SDK.حاليا منصتي المفضلة لمشاريع برمجة الهوايات

الوثائق/البرامج التعليمية للأدوات المذكورة ستكون مفيدة للغاية.

هل كانت مفيدة؟

المحلول

هناك واحد يسمى على وجه التحديد Leaks وكما ذكر أحد الملصقات السابقة، فإن أسهل طريقة لتشغيله هي مباشرة من Xcode:

تشغيل -> البدء باستخدام أداة الأداء -> التسريبات

يبدو الأمر جيدًا جدًا في اكتشاف تسرب الذاكرة، وكان من السهل على الأشخاص غير المتخصصين في لغة C اكتشافه مثلي.

نصائح أخرى

يختار Profile من Product القائمة في Xcode 6 لتشغيل أداة Apple Instruments.(يوجد التطبيق داخل محتويات حزمة تطبيق Xcode: /Applications/Xcode.app/Contents/Applications/)

البديل التجاري هو OmniObjectMeter. (أوقفتها مجموعة أومني)

ال Clang Static Analyser يعد أمرًا رائعًا للعثور على الأخطاء في أكواد C وC++ وObjective-C:

إليك الرابط لاستخدام أداة من xcode لاكتشاف تسرب الذاكرة/أداء تطبيق ios/macخطوات تشغيل الأداة من Xcode

يمكنك تشغيل الأدوات داخل Xcode menu -> run -> start with performance tool -> ...

هل توفر بيئة تطوير Xcode الخاصة بشركة Apple أي أدوات لاكتشاف تسرب الذاكرة؟

أنا مهتم بشكل خاص بالأدوات التي تنطبق على iPhone SDK.

نعم.تسميها Apple "الأدوات" (هناك أكثر من مجرد أدوات الذاكرة).

انظر أبل Introduction to Instruments User Guide.على وجه الخصوص، راجع Locating Memory Issues in Your App.وهو يوفر أمثلة حول كيفية استخدام قوالب التتبع الموجهة للذاكرة.

من المفترض أن يساعدك كل من ObjectAlloc وMallocDebug.إذا قمت بتثبيت حزمة SDK بأكملها، فسيتم العثور عليها في المطور->التطبيقات->أدوات الأداء.

تمنحك أسمائهم فكرة جيدة جدًا عن وظائفهم، OA، يتعقب الكائنات التي يتم إنشاؤها، وMA هي أداة عامة لتسرب الذاكرة.

لم أجربهم مع تطوير iPhone بعد، لكن يجب أن أصدق أنهم سيعملون هناك أيضًا.

بافتراض أنك قمت بالتسجيل في موقع مطور ADC iPhone، إليك الرابط التالي:Instruments User Guide

عند الاستخدام rustyshelf's solution تأكد من الاختبار على iPhone وليس على جهاز المحاكاة.يختلف استخدام الذاكرة بشكل كبير.

تم تلخيص أدوات تسرب الذاكرة الرئيسية: iphone-essential-performance-tools-list

جرب هذا أيضًا، وهو برنامج تعليمي بسيط للبدء باستخدام أدوات Xcode

أداة تسرب الذاكرة: http://www.raywenderlich.com/2696/

أساسي: http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode

enter image description here

الخطوة 1.اختر أداة التخصيصات

  1. اختر قالب ملف التعريف للتخصيصات:

enter image description here

  1. على واجهة الأدوات الرئيسية، انقر فوق VM Tracker، إذا كان موجودًا، ثم اضغط على مفتاح الحذف (Delete) نظرًا لأنك لن تحتاج إلى هذه الأداة المحددة:

enter image description here

من خلال النقر على زر علامة الزائد في الجزء العلوي الأيمن، يمكنك إضافة المزيد من الأدوات لأنواع مختلفة من الاختبارات، لكنني لن أغطيها في هذا البرنامج التعليمي.

الخطوة 2.قم بإعداد إعدادات الأدوات الخاصة بك

قبل إجراء أي تحليل، هناك بعض الأشياء التي يتعين عليك القيام بها.أولاً، تحتاج إلى توصيل جهاز iOS المثبت عليه تطبيقك.يجب أن يكون جهازًا فعليًا لأن iOS Simulator لا يزال محاكيًا وقد لا يمثل بدقة استخدام الذاكرة في تطبيقك أو كيفية أداء التطبيق تحت ضغط الذاكرة.

لاختيار هدفك، انقر فوق جهاز الكمبيوتر الخاص بي بالقرب من الجزء العلوي، قم بالتمرير فوق جهازك، ثم اختر تطبيقك من القائمة الفرعية:

enter image description here

بعد ذلك، هناك لوحة يمكنك من خلالها تغيير الإعدادات الخاصة بأنواع التخصيصات التي ستعرضها.بالإضافة إلى التأكد من خلق ومستمر تم تحديد الفقاعة، ليس هناك الكثير مما عليك القيام به مسبقًا.

enter image description here

الخطوه 3.اضغط على "تسجيل" لتشغيل الأداة

بمجرد الضغط على زر التسجيل في الجزء العلوي الأيسر، سيبدأ تشغيل تطبيقك على جهازك، وستبدأ الآلات في رسم تخصيصاتك.كل ما عليك فعله هنا هو تشغيل تطبيقك، مع التركيز على مناطق المشاكل المحتملة لمعرفة ما إذا كان يتم تخصيص ذاكرة أكثر من إلغاء التخصيص.قد يعني هذا القيام بالكثير من المهام المتكررة، لكنك ستشكر نفسك لاحقًا.

يجب أن نرى شيئا من هذا القبيل:

enter image description here

أوصي بتشغيل تطبيقك مرة واحدة والوصول إلى نقطة مستقرة في الذاكرة حتى يكون لديك خط أساس جيد سيجعل أي زيادة ملحوظة.عندما تكون مقتنعًا بأن لديك ما يكفي من البيانات للاختبار، اضغط على زر الإيقاف في الجزء العلوي الأيسر.

الخطوة 4.تحليل

  1. أول شيء أفعله هو تعيين نطاق الفحص الخاص بي لقياس إجمالي البايتات المستمرة عند خط الأساس الخاص بي.يوجد رقم البايت المستمر هذا أسفل ملخص التخصيص مباشرةً.

enter image description here

لتعيين نطاق الفحص فعليًا، استخدم اختصار لوحة المفاتيح الأمر < لنطاق التفتيش الأيسر و الأمر > لنطاق التفتيش الصحيح.في تطبيقنا، لدينا خط أساسي يبلغ حوالي 20 ميغابايت.

enter image description here

  1. بعد ذلك، أقوم بنقل نطاق الفحص الأيمن إلى النقطة التي قمت فيها بتشغيل التطبيق مرة أخرى وعدت إلى الجذر.هنا، يمكنك أن ترى أن الذاكرة هي نفسها تقريبًا.لذا، من خلال القيام بذلك عدة مرات أخرى ورؤية ذاكرتك تعود إلى خط الأساس لدينا، يمكنك افتراض عدم وجود مشكلات كبيرة في الذاكرة.

enter image description here

هناك طرق مختلفة لتحليل هذه البيانات لن أغطيها هنا، ولكن انتبه إلى أن هناك قائمة منسدلة كاملة لطرق عرض بياناتك وتحليلها.

enter image description here

الخطوة 5.بمناسبة الأجيال

إذا كنت تفضل عدم التعامل مع نطاقات الفحص كثيرًا، فهناك ميزة تسمى Mark Generation.يوجد زر خاص به على اللوحة اليمنى للأدوات.

enter image description here

سيحدد هذا الزر النقاط على المخطط الزمني للأدوات بناءً على مكان وجود خط الفحص.وذلك من أجل متابعة كافة التخصيصات منذ العلامة السابقة، أو من البداية في حالة عدم وجود علامات أخرى.يمكنك وضع علامة على الأجيال أثناء قيامك بتشغيل أداة التخصيص أو بعد إيقاف التشغيل، كما في هذا المثال:

enter image description here

الخطوة 6.تحقق من تتبع المكدس

آخر شيء يجب تغطيته هو النظر إلى تتبع المكدس.لهذا، تريد تعيين نطاق الفحص الخاص بك لتسليط الضوء على كافة التخصيصات، ثم إلقاء نظرة على عرض الإحصائيات، والتأكد من خلق ومستمر تم تحديد الفقاعة على اللوحة اليمنى.في عرض الإحصائيات، تأكد من فرز وحدات البايت الدائمة من الأعلى إلى الأدنى.هناك الكثير من التخصيصات هنا، وقد يكون من الصعب فهم ما يجري، نظرًا لأن الكثير منها عبارة عن تخصيصات للنظام.

enter image description here

الذهاب عميقا

  1. انظر إلى أكبر التخصيصات وانقر على السهم المتجه لليمين.في كثير من الأحيان، ستكون هناك تخصيصات داخل تلك التي نقرت عليها ولن يكون للكثير منها أي معنى بالنسبة لك.

enter image description here

  1. بينما تقوم بتمييز تخصيصات مختلفة بعد النقر فوق السهم، استمر في النظر إلى التفاصيل الموسعة على اللوحة اليمنى.في النهاية، ستصادف بعض النصوص الغامقة التي تؤدي إلى تعليمات برمجية فعلية في مشروعك، وتخبرك بالمشكلة المحتملة.

enter image description here

  1. إذا نقرت نقرًا مزدوجًا فوق أحد العناصر الغامقة في تتبع المكدس، فسوف يأخذك إلى الكود الفعلي (بافتراض أنك قمت بتشغيل عمليات التخصيص على تطبيق تملكه).

enter image description here

  1. هناك الكثير من الأشياء المفيدة حول هذا العرض، أحدها العلامات الصفراء في الغالب على اليمين والتي توضح لك مقدار الذاكرة التي يستهلكها كل استدعاء أسلوب.يختلف كل تطبيق عن الآخر، لذا يتعين عليك، كمطور، أن تقرر ما إذا كانت الطريقة المميزة تمثل مشكلة، أو شيء يمكنك تحسينه، أو مجرد جزء لا مفر منه من تطبيقك.

  2. في حالتي، يعد متغير UIColor هذا أمرًا ثابتًا ويتم استخدامه في جميع أنحاء تطبيقنا، وبالتالي فهو مقبول طوال عمر تطبيقنا.

وجدت هنا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top