سؤال

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

/developer/platforms/iphoneos.platform/developer/library/privateframeworks/dtdevicekit.framework/versions/a/resources/symbolicatecrash

يملأ جميع وظائف التفاح ولكن ليس لي. يبدو أن المشكلة هي أنه لا يمكن (أو لا) تحديد موقع ملف DSYM ، وربما لأنه يحتوي على معلومات آلة زميلي في العمل. عندما أقوم بنسخ عنوان السداسي من تقرير الحادث ، يمكنني استخدام Dwarfdump مثل هذا:

Dwarfdump -Lookup 0x0001f892 -Arch Armv6 Path/to/myapp.app.dsym

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

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

أيضًا ، أي فكرة لماذا لن يعرض بناء زميلي في العمل أيًا من وظائف Apple؟ وبينما أنا هنا ، ماذا يعني "+" في ملف التعطل؟ مثله:

0x00059f8c -[uiwindow sendevent:] + 108

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

المحلول

SymbolicAtecrash هو أحد الاختراقات العملاقة ، أفضل ما يمكنك فعله هو تعلم القيام بالأشياء تمامًا كما يتوقع منك. أو اقرأها الداخلية وإصلاحها ، ولكن بعد ذلك ، يجب عليك إعادة تثبيتها لتحديث SDK التالي ...

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

عندما تكون في شك دائمًا ، حاول -V خيار الحصول على المزيد من الأخطاء المفصلة.

لا توجد معلومات رقم خط لثنائيات Apple ، أنا شخصياً سعيدًا جدًا للحصول على أسماء الوظائف على الأقل. كان يمكن أن يكون أسوأ.

في "-[uiwindow sendevent:] + 108" يعني 108 بايت من بداية الوظيفة. التفسير المفيد الوحيد لهذه البيانات هو أنه إذا كان الرقم صغيرًا ، فمن المحتمل أن يكون دقيقًا ، إذا كان الرقم كبيرًا ، فسيكون ترمياتك خارجًا.

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