سؤال

أنا أتطلع إلى محاولة ورمز تقارير تحطم تطبيق iPhone الخاص بي.

استرجعت تقارير التعطل من اتصالات iTunes. لدي تطبيق ثنائي الذي قدمته إلى متجر التطبيقات ولدي ملف DSYM الذي تم إنشاؤه كجزء من الإنشاء.

لدي كل هذه الملفات معا داخل دليل واحد مفهرسة بواسطة الأضواء.

ماذا الان؟

لقد حاولت الاحتجاج:

symbolicatecrash crashreport.crash myApp.app.dSYM

وهذا فقط يخرج نفس النص الموجود في تقرير التعطل لتبدأ به، وليس رمزا.

أفعل شيئا خاطئا؟

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

المحلول

خطوات لتحليل تقرير التعطل من Apple:

  1. انسخ ملف الإصدار .APP الذي تم دفعه إلى AppStore، ملف .dsym الذي تم إنشاؤه في وقت الافراج وتتلقى تقرير التعطل من Apple إلى مجلد.

  2. افتح التطبيق الطرفي والانتقال إلى المجلد الذي تم إنشاؤه أعلاه (باستخدام cd أمر)

  3. يركض atos -arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASH. وبعد يجب أن يكون موقع الذاكرة هو الشخص الذي تعطل فيه التطبيق وفقا للتقرير.

السابق: atos -arch armv7 -o 'APPNAME.app'/'APPNAME' 0x0003b508

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

السابق: [classname functionName:]; -510

يرمز ipa.

إذا نستخدم IPA لترميز - فقط إعادة تسمية التمدد .ipa مع .zip، استخراجه، ثم يمكننا الحصول على مجلد حمولة يدل على التطبيق. في هذه الحالة، لا نحتاج إلى ملف.

ملحوظة

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

مزيد من التفاصيل بريد

نصائح أخرى

بعد قراءة كل هذه الإجابات هنا من أجل رمي سجل تحطم (وأخيرا أخيرا)، أعتقد أن هناك بعض النقاط المفقودة هنا مهمة حقا لتحديد سبب عدم إنتاج إخراج Symbolicatecrash مخرجا رمزا.

هناك 3 أصول يجب أن تناسبها معا عند الرموز على سجل تحطم:

  1. ملف سجل التحطم نفسه (أي example.crash)، إما تم تصديرها من منظم XCode أو وردت من iTunes Connect.
  2. ال .app الحزمة (أي example.app) يحتوي نفسها على التطبيق الثنائي ينتمي إلى سجل الأعطال. إذا كان لديك .ipa الحزمة (أي example.ipa) ثم يمكنك استخراج .app حزمة عن طريق فك .ipa الحزمة (أي unzip example.ipa). بعد ذلك .app حزمة موجودة في المستخرج Payload/ مجلد.
  3. ال .dSYM الحزمة التي تحتوي على رموز التصحيح (أي example.app.dSYM)

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

يتم إحالة كل ثنائي بواسطة UUID يمكن رؤيته في ملف سجل التعطل:

...
Binary Images:
0xe1000 -    0x1f0fff +example armv7  <aa5e633efda8346cab92b01320043dc3> /var/mobile/Applications/9FB5D11F-42C0-42CA-A336-4B99FF97708F/example.app/example
0x2febf000 - 0x2fedffff  dyld armv7s  <4047d926f58e36b98da92ab7a93a8aaf> /usr/lib/dyld
...

في هذا استخراج سجل تحطم ينتمي إلى تطبيق ثنائي التطبيق يدعى مثال .APP/Example مع UUID aa5e633efda8346cab92b01320043dc3.

يمكنك التحقق من UUID من الحزمة الثنائية لديك مع DWARFDump:

dwarfdump --uuid example.app/example
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app/example

بعد ذلك يجب عليك التحقق مما إذا كانت رموز التصحيح التي لديك أيضا تنتمي إليها ثنائي:

dwarfdump --uuid example.app.dSYM
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app.dSYM/Contents/Resources/DWARF/example

في هذا المثال، تتوافق جميع الأصول معا ويجب أن تكون قادرا على رمي StackTrace الخاص بك.

المضي قدما symbolicatecrash النصي:

في xcode 8.3 يجب أن تكون قادرا على استدعاء البرنامج النصي عبر

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v example.crash 2> symbolicate.log

إذا لم يكن هناك قد تقوم بتشغيل find . -name symbolicatecrash في دليل xcode.app للعثور عليه.

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

mdfind 'com_apple_xcode_dsym_uuids = *'

resp.

mdfind "com_apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3"

يمنحك الاحتجاج الأضواء الأول جميع حزم DSYM المفهرسة والثاني الذي يمنحك .dSYM حزم مع uuid معين. إذا كانت الأضواء لا تجد الخاص بك .dSYM حزمة ثم symbolicatecrash لن لا. إذا كنت تفعل كل هذه الأشياء على سبيل المثال في مجلد فرعي لك ~/Desktop يجب أن تكون الأضواء قادرة على العثور على كل شيء.

إذا symbolicatecrash يجد لك .dSYM الحزمة يجب أن يكون هناك خط مثل ما يلي في symbolicate.log:

@dsym_paths = ( <SOME_PATH>/example.app.dSYM/Contents/Resources/DWARF/example )

للعثور على الخاص بك .app حزمة البحث الأضواء مثل ما يلي يتم استدعاء بواسطة symbolicatecrash:

mdfind "kMDItemContentType == com.apple.application-bundle && (kMDItemAlternateNames == 'example.app' || kMDItemDisplayName == 'example' || kMDItemDisplayName == 'example.app')"

إذا symbolicatecrash يجد لك .app الحزمة يجب أن يكون هناك استخراج التالي في symbolicate.log:

Number of symbols in <SOME_PATH>/example.app/example: 2209 + 19675 = 21884
Found executable <SOME_PATH>/example.app/example
-- MATCH

إذا تم العثور على كل هذه الموارد من قبل symbolicatecrash يجب طباعة الإصدار الرمزي من سجل الأعطال الخاص بك.

إذا لم يكن الأمر كذلك، يمكنك تمرير ملفات DSYM و .APP مباشرة.

symbolicatecrash -v --dsym <SOME_PATH>/<App_URI>.app.dSYM/<APP_NAME>.app.dsym <CRASHFILE> <SOME_OTHER_PATH>/<APP_NAME>.app/<APP_NAME> > symbolicate.log

ملحوظة: سيتم إخراج BackTrace الرمثائي إلى المحطة الطرفية symbolicate.log.

مع أحدث إصدار من XCode (3.2.2)، يمكنك سحب وإسقاط أي تقارير تعطل في قسم سجلات الجهاز من منظم Xcode وسيتم تلقائيا عن طريق رمي لك. أعتقد أن هذا يعمل بشكل أفضل إذا قمت ببناء هذا الإصدار من التطبيق باستخدام Build & Archive (أيضا جزء من Xcode 3.2.2)

فعلت هذا بنجاح، باستخدام الخطوات التالية.

الخطوة 1: قم بإنشاء مجلد في سطح المكتب، وأعطي اسمه "CrashReport" ووضع ثلاثة ملفات ("myapp.app"، "myapp.app.dsym"، "myapp_2013-07-18.crash") فيه.

الخطوة 2: افتح Finder وانتقل إلى التطبيقات، حيث ستجد تطبيق Xcode، انقر بزر الماوس الأيمن فوق هذا وانقر فوق "إظهار محتويات الحزمة"، بعد هذا اتباع هذا المسار البسيط. "المحتويات-> المطور-> المنصات-> iPhoneos.platform-> المطور-> مكتبة-> PrivateFrameworks->dtdevicekit.framework.-> إصدارات> A-> الموارد "

أو

"المحتويات-> المطور-> المنصات-> iPhoneos.platform-> المطور-> مكتبة-> PrivateFrameworks->dtdevicekitbase.framework.-> إصدارات> A-> الموارد "

أو

للحصول على Xcode 6 فما فوق المسار هو التطبيقات / xcode.app / contents / sharedframeworks / dtdevicekitbase.framework / الإصدارات / A / الموارد

حيث تجد ملف "Symbolicatecrash"، انسخ هذا ولصقه إلى مجلد "CrashReport".

الخطوه 3: قم بتشغيل المحطة، قم بتشغيل الأمر 3

  1. CD / Users / MAC38 / Desktop / CrashReport واضغط على زر ENTER

  2. Export Developer_dir = "/ التطبيقات / xcode.app / contents / developer" واضغط على Enter

  3. ./symbolicatecrash -a -v myapp_2013-07-18.craSh myapp.app.dsym واضغط الآن القيام به الآن القيام به .. (ملاحظة: الإصدارات حول 6.4 أو الأحدث ليس لديك خيار -A - فقط اتركه).

خطوات ترميز تقرير التعطل تلقائيا باستخدام XCode:

تحديث ل xcode 9

  1. الاتصال أي جهاز iOS إلى جهاز Mac الخاص بك (نعم مادي، نعم أعلم أن هذا غبي)

  2. اختر "الأجهزة" من قائمة "النافذة"enter image description here

  3. انقر فوق جهازك على يسارك وعرض سجلات الجهاز على اليمينenter image description here

  4. انتظر. قد يستغرق الأمر دقيقة لإظهار. ربما تفعل Command-A ومن بعد Delete سوف تسرع هذا.

  5. الخطوة الحاسمة غير الموثقة: إعادة تسمية تقرير التحطم الذي حصلت عليه من iTunesconnect من .txt التمديد إلى .crash تمديد

  6. اسحب تقرير التعطل إلى تلك المنطقة على اليسارenter image description here

ثم سيقوم XCode برمز تقرير التعطل وعرض النتائج.

مصدر: https:/developer.apple.com/library/ios/technotes/tn2151/_index.html.

يمكنني استخدام Airbrake في تطبيقاتي، والتي تقوم بعمل جيد إلى حد ما في تسجيل الأخطاء عن بعد.

إليك كيفية رميها مع ATOS إذا احتاجت Backtrace:

  1. في Xcode (4.2) انتقل إلى المنظم، انقر بزر الماوس الأيمن على الأرشيف الذي تم إنشاؤه ملف .ابلبا.

  2. في المحطة، CD في xcarchive على سبيل المثال MyCoolApp 10-27-11 1.30 PM.xcarchive

  3. أدخل التالي atos -arch armv7 -o 'MyCoolApp.app'/'MyCoolApp'(لا تنسى اقتباسات واحدة)

  4. لا أقوم بتضمين رمزي في هذه المكالمة. ما تحصل عليه هو مؤشر كتلة على خط فارغ.

  5. ثم قمت بنسخ / لصق رمز الرمز الخاص بي في هذا المؤشر Block واضغط على Enter. سترى شيئا مثل:

    -[MyCoolVC dealloc] (in MyCoolApp) (MyCoolVC.m:34)

  6. أنت تعود إلى مؤشر كتلة ويمكنك لصقها في الرموز الأخرى.

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

استمتع!

أنا أيضا وضع DSYM وحزمة التطبيقات، وتقلص تسجيل الدخول معا في نفس الدليل قبل تشغيل تعطل الرمز

ثم استخدم هذه الوظيفة المعرفة في بلدي .profile لتبسيط تشغيل symbolicatecrash:

function desym
{
    /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}

وأضافت الحجج قد تساعدك.

يمكنك التحقق من التأثير على الأضواء "يرى" ملفات DYSM الخاصة بك عن طريق تشغيل الأمر:

mdfind 'com_apple_xcode_dsym_uuids = *'

ابحث عن DSYM لديك في الدليل الخاص بك.

ملاحظة: اعتبارا من أحدث XCode، لم يعد هناك دليل مطور. يمكنك العثور على هذه الأداة المساعدة هنا:

/applications/xcode.app/contents/sharedframeworks/dtdevicekitbase.framework/vers أيونات / A / الموارد / Symbolicatecrash

مجرد إجابة بسيطة ومحدثة للحصول على XCode 6.1.1.

خطوات

1.xcode> نافذة> الأجهزة.

2. حدد جهاز من قائمة الأجهزة ضمن قسم الأجهزة.

3. اختيار سجلات الجهاز.

4. تحت كل قسم سجلات كل ما يمكنك سحب مباشرة إسقاط التقرير.

5.xcode سوف يرمز تلقائيا تقرير التعطل لك.

6. يمكنك العثور على تقرير التعطل الرمزي من خلال مطابقة تاريخ / وقته مع التاريخ / الوقت المذكور في تقرير تحطم الخاص بك.

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

1- اذهب أولا إلى iTunesconnect وتنزيل سجلات الأعطال الخاصة بك. ملاحظة: هل قد تحصل في معظم الحالات التي قد تحصل عليها مثل "القليل جدا من التقارير المقدمة لإظهار تقرير". أساسا لا يكفي المستخدمين قدموا تقارير سجل الأعطال إلى Apple في هذه الحالة لا يمكنك القيام بالكثير من أي شيء في تلك المرحلة.

enter image description here

enter image description here

2- الآن إذا لم تكن قد غيرت الكود الخاص بك منذ أن قمت بإرسالها ثنائيها إلى Apple ثم إطلاق XCode لهذا المشروع والمنتج -> الأرشيف مرة أخرى. خلاف ذلك فقط ابحث عن أحدث الأحدث الثنائية المقدمة والنقر بزر الماوس الأيمن عليه.

enter image description here

enter image description here

enter image description here

enter image description here

في Xcode 4.2.1، مفتوحة منظم, ، ثم اذهب الى سجلات المكتبة / الجهاز واسحب ملف .crash الخاص بك إلى قائمة سجلات الأعطال. سيكون رمزا لك بعد بضع ثوان.

لاحظ أنه يجب عليك استخدام نفس مثيل XCode الذي تم إحضاره الإصدار الأصلي (أي أرشيف يجب أن توجد في منظم).

باستخدام XCode 4، المهمة هي أكثر بساطة:

  • افتح منظم,
  • انقر فوق المكتبة | سجل الجهاز في العمود الأيسر
  • انقر فوق "يستوردزر في الجزء السفلي من الشاشة ...

وفويلا. يتم استيراد ملف السجل ورمز تلقائيا لك. قدمت لك أرشفة بناء باستخدام XCode -> المنتج -> الأرشيف أول.

منظم Xcode السحري ليس السحرية برمز تطبيقي. لم أحصل على رموز على الإطلاق لتقارير التعطل التي عدتها من Apple من تقديم تطبيق فاشل.

حاولت استخدام سطر الأوامر، ووضع تقرير التعطل في نفس المجلد كملف .APP (الذي قدمته إلى المتجر) وملف .dsym:

$ symbolicatecrash "My App_date_blahblah-iPhone.crash" "My App.app"

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

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

نسخ تقارير التعطل إلى سطح المكتب أولا، ثم سحبها من هناك إلى المنظم حصلت عليها رمزا بشكل صحيح.

حالة محددة جدا، وأنا أعلم. ولكن اعتقدت أنني أشاطر فقط في حالة.

فيما يلي مشكلة أخرى لدي مع symbolicatecrash - لن تعمل مع تطبيقات لها مسافات في حزمة الحزمة الخاصة بها (أي اختبار app.app "). ملاحظة لا أعتقد أنه يمكنك الحصول على مسافات في اسمها عند تقديمها حتى يجب عليك إزالة هذه على أي حال، ولكن إذا كان لديك بالفعل تعطلات تحتاج إلى تحليل، فقم بتصحيح Symbolicatecrash (4.3 جم) على هذا النحو:

240c240
<         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == $exec_name.app\"";
---
>         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == '$exec_name.app'\"";
251c251
<             my $cmd = "find \"$archive_path/Products\" -name $exec_name.app";
---
>             my $cmd = "find \"$archive_path/Products\" -name \"$exec_name.app\"";

بالنسبة لأولئك الذين يستخدمون Aire Fakebrake، هناك استجابة قوية فوقها ولكنها لن تعمل من أجلي دون تغيير:

يعمل لبعض عناوين الذاكرة ولكن ليس غيرها، غير متأكد من السبب

  • إنشاء دير جديد على سطح المكتب أو أينما كان
  • البحث عن الأرشيف في السؤال من منظم Xcode
  • انقر نقرا مزدوجا للكشف في مكتشف
  • انقر نقرا مزدوجا لإظهار محتويات الحزمة
  • نسخ ملف .dsym و .APP ملف في دير جديد
  • CD في دير جديد
  • قم بتشغيل هذا الأمر: ATOS -ARK ARMV7 -O 'Vimeo.App' / 'Vimeo'
  • سيتم إدخال محطة تفاعلية
  • لصق عنوان الذاكرة واضغط على Enter، وسوف يتم إخراج اسم الأسلوب ورقم الخط
  • بدلا من ذلك، أدخل هذا الأمر: ATOS -ARK ARMV7 -O 'Vimeo.App' / 'Vimeo' للحصول على معلومات لعنوان واحد فقط

الجمع الذي عمل بالنسبة لي كان:

  1. انسخ ملف DSYM إلى الدليل الذي كان فيه تقرير التعطل
  2. قم بفك ضغط ملف IPA الذي يحتوي على التطبيق ("UNZIP MYAPP.IPA")
  3. انسخ تطبيق ثنائي من الحمولة الناتجة عن الحمولة الناتجة في نفس المجلد مثل تقرير التعطل وملف الرمز (شيء مثل "myapp.app/myapp")
  4. استيراد أو إعادة ترميم تقرير التعطل من داخل منظم Xcode

استخدام atos. لم أتمكن من حل معلومات الرمز الصحيحة مع العناوين والإزاحات التي كانت في تقرير التعطل. عندما فعلت هذا، أرى شيئا أكثر أهمية، ويبدو أن تتبع مكدس مشروعي.

اضطررت إلى القيام بالكثير من القرصنة من البرنامج النصي Symplicatrash للحصول عليه لتشغيله بشكل صحيح.

بقدر ما أستطيع أن أقول، فإن Symbolicatecrash الآن يتطلب أن يكون .APP لتكون في نفس الدليل مثل. سيستخدم .dsym لتحديد موقع .APP، لكنه لن يستخدم DSYM للعثور على الرموز.

يجب عليك إنشاء نسخة من Symbolicatecrash قبل محاولة هذه التصحيحات التي ستجعلها تبدو في DSYM:

حول السطر 212 في وظيفة getsymbolboblpathfor_dsymuid

212     my @executablePath = grep { -e && ! -d } glob("$dsymdir" . "/Contents/Resources/DWARF/" . $executable);

حول الخط 265 في وظيفة matchesuid

265             return 1;

هذا بسيط، بعد البحث عن الكثير، وجدت خطوات واضحة لرمز ملف سجل التعطل بأكمله.

  • نسخ ملفات .APP و Crash_Report و DSYM في مجلد.
  • قم بتوصيل الجهاز باستخدام XCode
  • ثم انتقل إلى النافذة -> تحديد الأجهزة -> عرض سجلات الجهاز
  • ثم حدد هذا الجهاز، حذف جميع السجلات.
  • اسحب وإسقاط التعطل على قسم سجل الجهاز. سوف يرمز تلقائيا إلى الحادث. فقط انقر بزر الماوس الأيمن فوق تقرير وتصديره.

الترميز السعيد،
رياض

انا افضل النصي هذا سوف يرمز كل سجلات تحطم بلدي.

الشروط المسبقة

إنشاء مجلد ووضع هناك 4 أشياء:

  1. symbolicatecrash البرنامج النصي بيرل - هناك العديد من الإجابات التي تحكي بها

  2. أرشيف البناء الذي يطابق الحادث (من منظم Xcode. بسيط مثل Show in Finder ونسخ) [أنا لست متأكدا من أن هذه ضرورة

  3. كل ال xccrashpoint حزم - (من منظم Xcode. Show in Finder, ، يمكنك نسخ جميع الحزم الموجودة في الدليل، أو أن Xccrashpoint واحد ترغب في الرموز)

  4. أضف هذا البرنامج النصي القصير إلى الدليل:

    #!/bin/sh
    
    echo "cleaning old crashes from directory"
    rm -P *.crash
    rm -P *.xccrashpoint
    rm -r allCrashes
    echo "removed!"
    echo ""
    echo "--- START ---"
    echo ""
    
    mkdir allCrashes
    mkdir symboledCrashes
    find `ls -d *.xccrashpoint` -name "*.crash" -print -exec cp {} allCrashes/ \;
    
    cd allCrashes
    for crash in *.crash; do
        ../symbolicatecrash $crash > ../symboledCrashes/V$crash
    done
    cd ..
    
    echo ""
    echo "--- DONE ---"
    echo ""
    

النص

عند تشغيل البرنامج النصي، ستحصل على دلصان.

  1. allCrashes - كل الأعطال من كل xccrashpoint سيكون هناك.

  2. symboledCrashes - نفس الأعطال ولكن الآن مع كل الرموز.

  3. لا تحتاج إلى تنظيف الدليل من تعطل القديم قبل تشغيل البرنامج النصي. سوف تنظيف تلقائيا. حظا طيبا وفقك الله!

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

لقد حصلت غاضبا بعض الشيء حول حقيقة أنه يبدو هنا "العمل فقط" لذلك فعلت بعض التحقيق والنتيجة هي:

الإعداد: نهاية Quincykit الظهر التي تتلقى التقارير. لا يوجد رموز تم إعداده لأنني لم أستطع حتى أن أبدأ في معرفة ما كانوا يقترحون القيام به لجعله يعمل.

الإصلاح: قم بتنزيل تقارير التعطل من الخادم عبر الإنترنت. يطلقون عليهم "تحطم" وإتقصائي الذهاب إلى ~ / التنزيلات / المجلد. مع وضع ذلك في الاعتبار، سيقوم هذا البرنامج النصي "بالشيء الصحيح" وسيتم بدء تقارير التعطل xcode (منظم، وسجلات الجهاز) وسيتم تشغيل الرمز.

النص:

#!/bin/bash
# Copy crash reports so that they appear in device logs in Organizer in Xcode

if [ ! -e ~/Downloads/crash ]; then 
   echo "Download a crash report and save it as $HOME/Downloads/crash before running this script."
   exit 1
fi

cd ~/Library/Logs/CrashReporter/MobileDevice/
mkdir -p actx # add crash report to xcode abbreviated
cd actx

datestr=`date "+%Y-%m-%d-%H%M%S"`

mv ~/Downloads/crash "actx-app_"$datestr"_actx.crash"

يمكن أن تكون الأمور مؤتمتة إلى حيث يمكنك سحب وإسقاط منظم XCode من خلال القيام بشيءين إذا كنت تستخدم Quincykit / Plcr.

أولا، عليك تحرير المسؤول عن البرنامج النصي البعيد / ActionApi.php ~ الخط 202. لا يبدو أنه يحصل على الطابع الزمني الصحيح، لذلك ينتهي الملف باستخدام الاسم "تعطل" الذي لا يتعرف عليه xcode (يريد شيئا تحطم نقطة):

header('Content-Disposition: attachment; filename="crash'.$timestamp.'.crash"');

ثانيا، في جانب iOS في Quincykit bwcrashreporttextformator.m ~ Line 176، تغيير @"[TODO]" ل @"TODO" للحصول على الأحرف السيئة.

يتم إهمال ATOS حتى إذا كنت تقوم بتشغيل OSX 10.9 أو الأحدث قد تحتاج إلى تشغيل

xcrun atos

تحذير: / USR / BIN / ATOS يتحرك وسيتم إزالته من إصدار OS X في المستقبل. متوفر الآن في أدوات مطور XCODE التي سيتم استدعاءها عن طريق: xcrun atos

أحب استخدام textwrangler لتحديد الأخطاء في التطبيق الأصلي تحميل الرفض الثنائي. (سيتم العثور على بيانات التعطل في حساب iTunesconnect الخاص بك.) باستخدام طريقة Sachin أعلاه، قمت بنسخ Original.crash إلى TextWrangler، ثم انسخ ملف Symbolicatecrash الذي قمت بإنشائه إلى ملف TextWrangler آخر. مقارنة اثنين من الملفات تحديد الاختلافات. سيكون لدى ملف Symbolicatecrash الاختلافات التي تشير إلى الملف ورقم السطر من المشكلات.

اكتشفت أن معظم البدائل المقترحة لم تعمل في أحدث XCode (اختبارها مع XCode 10). على سبيل المثال، لم يكن لدي أي حظ، إسقاط السحب. تسجيل الدخول في Xcode -> منظم -> سجلات الأجهزة

أوصي باستخدام أداة Symericator https://github.com/agentsim/symbolicator.

  • مستودع GIT CLONE COMMERCICATOR وتجميعها وتشغيلها مع Xcode
  • نسخ ملف .crash (ملف ASCII، مع تتبع المكدس في التسول من الملفات) و. roxarchive من تحطم الطائرة إلى المجلد الأصلي
  • سحب وإسقاط ملف. الإخيل إلى رمز الرمز في قفص الاتهام
  • في 5-30 ثانية يتم إنتاج ملف تعطل رمزي في نفس المجلد كما هو .crash و .Xarchive

نحن نستخدم Google Crashlytics للإشراف على سجلات الأعطال، والشعور في الوقت المناسب للغاية ومريحة للاستخدام.

روابط المستندات:https:/docs.fabric.io/apple/crashlytics/missing-ssyms.html#missing-ssms.

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

يمكن تحميل DSMS مفقود يدويا بعد الخطوات الموضحة أدناه.

ملاحظة: كبديل لأداة تحميل DSYM الآلي، يوفر النسيج أداة سطر الأوامر (رموز تحميل)) التي يمكن تكوينها يدويا لتشغيل كجزء من عملية بناء المشروع الخاص بك. راجع قسم الرموز التحميل أدناه للحصول على إرشادات التكوين.

...

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