สัญลักษณ์การรายงานแอปชนของ iPhone


433

ฉันกำลังมองหาที่จะลองและเป็นสัญลักษณ์รายงานความผิดพลาดของแอพ iPhone

ฉันดึงรายงานข้อขัดข้องจาก iTunes Connect ฉันมีแอปพลิเคชันไบนารีที่ฉันส่งไปยัง App Store และฉันมีไฟล์ dSYM ที่สร้างขึ้นเป็นส่วนหนึ่งของบิลด์

ฉันมีไฟล์ทั้งหมดเหล่านี้รวมกันภายในไดเรกทอรีเดียวที่จัดทำดัชนีโดยสปอตไลท์

เกิดอะไรขึ้น

ฉันได้ลองเรียกใช้:

symbolicatecrash crashreport.crash myApp.app.dSYM

และมันก็แสดงผลลัพธ์ข้อความเดียวกับที่อยู่ในรายงานความผิดพลาดเพื่อเริ่มต้นด้วยไม่ใช่สัญลักษณ์

ฉันกำลังทำอะไรผิดหรือเปล่า?


3
คุณยังสามารถดูคำตอบของฉันได้ที่iPhone SDK: symbolicatecrash.sh ตั้งอยู่ที่ไหน? . ฉันระบุตำแหน่งที่จะค้นหาsymbolicatecrashคำสั่งวิธีใช้งานและวิธีค้นหาไฟล์ dSYM ที่จำเป็นในการทำสัญลักษณ์
Sam

6
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
logancautrell

5
ฉันได้สร้างสคริปต์ที่อาจช่วยได้: github.com/amleszk/scripts/blob/master/…
amleszk

1
หากมีคนสงสัยว่าคุณจะได้รับ * .app, * .dSYM & บันทึกข้อขัดข้องเป็นอย่างไรให้ดูคำตอบของฉันด้านล่าง
Sam B

3
คุณสามารถอ้างถึงสิ่งนี้: medium.com/@Mrugraj/crash-re-symbolication-5c28d3a3a883
Mrug

คำตอบ:


689

ขั้นตอนในการวิเคราะห์รายงานข้อขัดข้องจาก apple:

  1. คัดลอกแฟ้มปล่อย .app ซึ่งถูกผลักไป AppStore ไฟล์ .dSYM ที่ถูกสร้างขึ้นในช่วงเวลาของการเปิดตัวและรายงานความผิดพลาดได้รับจาก APPLE เป็นโฟลเดอร์

  2. เปิดแอปพลิเคชั่นหน้าจอเครื่องแล้วไปที่โฟลเดอร์ที่สร้างขึ้นด้านบน (โดยใช้cdคำสั่ง)

  3. atos -arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASHวิ่ง ตำแหน่งหน่วยความจำควรเป็นตำแหน่งที่แอปชนตามรายงาน

Ex: atos -arch armv7 -o 'APPNAME.app'/'APPNAME' 0x0003b508

นี่จะแสดงบรรทัดที่แน่นอนชื่อวิธีการที่ทำให้เกิดความผิดพลาด

Ex: [classname functionName:]; -510

สัญลักษณ์ IPA

ถ้าเราใช้ IPA เพื่อเป็นสัญลักษณ์ - เพียงแค่เปลี่ยนชื่อส่วนขยาย. ipa ด้วย. zip แยกมันออกจากนั้นเราจะได้รับ Payload Folder ซึ่งมีแอพ ในกรณีนี้เราไม่ต้องการไฟล์. dSYM

บันทึก

วิธีนี้สามารถใช้งานได้หากไบนารีของแอปไม่มีสัญลักษณ์ที่ถูกขีดทับ โดยค่าเริ่มต้นการสร้างจะตัดสัญลักษณ์ เราสามารถเปลี่ยนได้ในการตั้งค่าการสร้างโครงการ "Strip Debug Symbols ระหว่างการคัดลอก" เป็น NO

รายละเอียดเพิ่มเติมดูโพสต์นี้


12
เพียงปลายคำตอบของ @NaveenShan ตัวอย่างในโลกแห่งความจริงจะทำสิ่งนี้ atos -o myApp.app/Contents/MacOS/myApp 0x0000000100001f2c และคุณจะได้รับ -[HUDWindow sizedHUDBackground] (in myApp) + 1197
loretoparisi

3
คุณใช้ที่อยู่ไหน บันทึกมีที่อยู่สองคอลัมน์หลังจากแต่ละฟังก์ชั่นและที่สองมี + และออฟเซ็ตบางชนิด ชอบ 0x332da010 0x332d9000 + 4112
Oscar

7
@OscarGoldman ที่อยู่ที่สองเช่น: - ใน 0x332da010 0x332d9000 + 4112 ใช้ 0x332d9000
Naveen Shan

4
นอกจากนี้หากใช้โดยไม่มีที่อยู่จะช่วยให้คุณวิเคราะห์สถานที่หลายแห่งโดยส่งที่อยู่เหล่านั้นทีละคน
Paul Ardeleanu

42
มีปัญหาหลายอย่างกับคำตอบนี้: 1. วิธีนี้สามารถทำงานได้หากไบนารีของแอปไม่มีสัญลักษณ์ที่ถูกถอดออก และปล่อยการสร้างโดยค่าเริ่มต้นจะมีการแยกออก 2. แม้ว่าสัญลักษณ์จะพร้อมใช้งาน แต่ก็จะไม่แสดงหมายเลขบรรทัดเลย เฉพาะสัญลักษณ์ที่มี dSYM เท่านั้นที่จะให้ 3. คุณไม่สามารถใช้ที่อยู่หน่วยความจำที่แสดงในการติดตามสแต็คได้อย่างง่ายดายที่อยู่จะต้องเป็นมาตรฐานกับที่อยู่หน่วยความจำเริ่มต้นที่โหลดแอป รายละเอียดเพิ่มเติมดูคำตอบนี้: stackoverflow.com/questions/13574933/…
Kerni

173

หลังจากอ่านคำตอบทั้งหมดเหล่านี้ที่นี่เพื่อเป็นสัญลักษณ์บันทึกข้อผิดพลาด (และประสบความสำเร็จในที่สุด) ฉันคิดว่ามีบางจุดที่หายไปที่นี่ซึ่งมีความสำคัญจริง ๆ เพื่อกำหนดว่าทำไมการภาวนาของ

มีสินทรัพย์ 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
...

ในสารสกัดจากนี้บันทึกความผิดพลาดเป็นภาพแอปไบนารีชื่อ example.app/example กับ aa5e633efda8346cab92b01320043dc3UUID

คุณสามารถตรวจสอบ UUID ของแพ็คเกจไบนารีที่คุณมีกับ dwarfdump:

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

หลังจากนั้นคุณควรตรวจสอบว่าสัญลักษณ์ debug ที่คุณเป็นของไบนารีนั้นหรือไม่:

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

ในตัวอย่างนี้สินทรัพย์ทั้งหมดเข้าด้วยกันและคุณควรจะสามารถเป็นสัญลักษณ์สแต็คของคุณ

ดำเนินการกับ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 = *'

รับผิดชอบ

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

หมายเหตุ:ติดตามย้อนหลัง symbolicated symbolicate.logจะถูกส่งออกไปยังสถานีไม่


ฉันสามารถหาไฟล์ทั้งหมด แต่ฉันได้รับนี้และไม่มีการส่งออก symbolicatedNo crash report version in testlog.crash at /usr/bin/symbolicatecrash line 921.
jere

1
มันมีประโยชน์จริง ๆ ! ในกรณีของฉันไฟล์. app มีชื่อแตกต่างจากชื่อที่ปฏิบัติการได้ (ฉันไม่รู้ว่าทำไม แต่สร้างด้วยวิธีนี้โดย Xcode) หลังจากเปลี่ยนชื่อไฟล์. app ในไฟล์เก็บถาวร XCode การแสดงสัญลักษณ์ใช้งานได้
Hrissan

29
นี่เป็นคำอธิบายที่ดีมากและควรเป็นคำตอบยอดนิยม IMO ขอบคุณ โปรดทราบว่าคุณอาจจะต้องตั้งค่าของตัวแปรสภาพแวดล้อมถ้าสคริปต์บ่นเกี่ยวกับมันเช่นดังนั้น:DEVELOPER_DIR ฉันเพิ่มบรรทัดนี้ของฉันexport DEVELOPER_DIR=`xcode-select --print-path` ~/.bash_profileดูstackoverflow.com/q/11682789/350761
Eliot

1
โปรดทราบว่าสำหรับ Xcode 5 สิ่งนี้ได้ย้ายไปที่: <PATH_TO_Xcode.app> /Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/Current/Resources/sevyms
เอเลียต

1
สัญลักษณ์ความผิดพลาดยังมีตัวเลือกที่เป็นประโยชน์หลายอย่าง <SYMBOL_PATH> Additional search paths in which to search for symbol rich binaries -o | --output <OUTPUT_FILE> The symbolicated log will be written to OUTPUT_FILE. Defaults to "-" (i.e. stdout) if not specified -d | --dsym <DSYM_BUNDLE> Adds additional dSYM that will be consulted if and when a binary's UUID matches (may be specified more than once)
benuuu

115

ด้วย Xcode เวอร์ชันล่าสุด (3.2.2) คุณสามารถลากและวางรายงานข้อขัดข้องใด ๆ ลงในส่วน Device Logs ของ Xcode Organizer และรายงานเหล่านั้นจะเป็นสัญลักษณ์ของคุณโดยอัตโนมัติ ฉันคิดว่าวิธีนี้ใช้ได้ผลดีที่สุดหากคุณสร้างแอปเวอร์ชันนั้นโดยใช้ Build & Archive (เช่นส่วนหนึ่งของ Xcode 3.2.2)


3
นี่เป็นเพียงการไม่ทำงานกับ Xcode4 ในการติดตั้งใหม่ ดูเหมือนว่าจะเป็นปัญหาใหม่ :(
อดัม

1
ผมไม่แน่ใจว่าถ้าแก้ปัญหานี้เหมือนกันที่คุณมี แต่คนได้ปะสคริปต์ symbolicate github.com/nskboy/symbolicatecrash-fix YMMV :)
อลันโรเจอร์ส

2
เคล็ดลับนี้ใช้ได้กับ Xcode 4.2 วาง crashlogs ใน Device Logs ของ Organizer รีสตาร์ท Organizer จะได้รับการบันทึกการชนกันแบบเป็นสัญลักษณ์ !!! ขอบคุณ
harshit2811

2
สิ่งนี้ไม่ทำงานจากฉันเมื่อฉันนำเข้าไฟล์เก็บถาวรจากคอมพิวเตอร์เครื่องอื่นเพื่อรับบันทึกข้อผิดพลาด :( ด้วยเหตุนี้ฉันต้องทำสัญลักษณ์ไฟล์ด้วยตนเองคุณสามารถหาขั้นตอนในการทำสัญลักษณ์ได้ที่นี่: iPhone SDK: symbolicatecrash.sh ตั้งอยู่ที่ไหน?
Sam

3
ไม่ทำงานสำหรับฉันด้วยรายงานความขัดข้องที่ดาวน์โหลดจาก iTunes Connect
Dmitry

72

ฉันทำสิ่งนี้ได้สำเร็จโดยใช้ขั้นตอนต่อไปนี้

ขั้นตอนที่ 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 ขึ้นไปพา ธ คือ Applications / Xcode.app / เนื้อหา / SharedFrameworks / DTDeviceKitBase.framework / รุ่น / A / ทรัพยากร

ที่ซึ่งคุณพบไฟล์ "symbolicatecrash" ให้คัดลอกและวางลงในโฟลเดอร์ "CrashReport"

ขั้นตอนที่ 3:เรียกใช้เทอร์มินัลเรียกใช้คำสั่ง 3 เหล่านี้

  1. cd / Users / mac38 / Desktop / CrashReport และกดปุ่ม Enter

  2. export DEVELOPER_DIR = "/ Applications / Xcode.app / Contents / Developer" แล้วกด Enter

  3. ./symbolicatecrash -A -v MYApp_2013-07-18.crash MyApp.app.dSYM และกด Enter เสร็จแล้ว .. (หมายเหตุ: เวอร์ชั่นประมาณ 6.4 ขึ้นไปไม่มีตัวเลือก -A - เพียงแค่ปล่อยทิ้งไว้)

3
สำหรับ DTServiceKit ดูใน Applications / Xcode.app / Contents / SharedFrameworks
Ryan Heitner

3
ขอบคุณขอบคุณ ... เมื่อวันที่ 9 เมษายน 2558 นี่คือสิ่งที่ใช้ได้กับฉันอย่างไม่มีที่ติ สิ่งหนึ่งก็คือฉันได้รับUnknown option: Aสัญลักษณ์เป็นสัญลักษณ์ แต่กระบวนการทำงานต่อไป
Matt Fiocca

1
ฉันหวังว่าฉันจะสามารถให้คะแนนพันคำตอบนี้ มีวิธีการมากมายในหัวข้อนี้ ... แต่นี่เป็นวิธีที่ทำงานในระดับต่ำสุดดังนั้นจึงใช้งานได้เสมอ มันเป็นความเจ็บปวดทางด้านหลังที่จะกระทบทุกขั้นตอน แต่เมื่อทุกอย่างล้มเหลว
แช้ดโรบินสัน

35

ขั้นตอนในการเป็นสัญลักษณ์ของรายงานความผิดพลาดโดยอัตโนมัติโดยใช้ XCode:

อัปเดตสำหรับ XCODE 9

  1. เชื่อมต่อใด ๆอุปกรณ์ iOS กับ Mac ของคุณ (ใช่ทางหนึ่งใช่ฉันรู้ว่านี้คือโง่)

  2. เลือก "อุปกรณ์" จากเมนู "หน้าต่าง" ป้อนคำอธิบายรูปภาพที่นี่

  3. คลิกอุปกรณ์ของคุณทางด้านซ้ายและดูอุปกรณ์บันทึกทางด้านขวา ป้อนคำอธิบายรูปภาพที่นี่

  4. รอ. อาจใช้เวลาสักครู่ในการแสดง บางทีการทำเช่นCommand-Aนั้นDeleteจะทำให้ความเร็วเพิ่มขึ้น

  5. ขั้นตอนที่ไม่มีเอกสารสำคัญ:เปลี่ยนชื่อรายงานข้อขัดข้องที่คุณได้รับจาก iTunesConnect จาก.txtส่วนขยายเป็น.crashส่วนขยาย

  6. ลากรายงานความผิดพลาดไปยังพื้นที่นั้นทางด้านซ้าย ป้อนคำอธิบายรูปภาพที่นี่

จากนั้น Xcode จะเป็นสัญลักษณ์ของรายงานข้อขัดข้องและแสดงผลลัพธ์

ที่มา: https://developer.apple.com/library/ios/technotes/tn2151/_index.html


1
นี่เป็นขั้นตอนอย่างเป็นทางการของ Apple ควรเป็นคำตอบ
Giammy

2
ขอบคุณฉันกำลังเพิ่มรูปภาพ รวมถึงขั้นตอน SUPER UNDOCUMENTED ด้วย ฉันคิดเกี่ยวกับการทำคอมไพล์ของข้อความสีแดงและต่อเติมในนั้นเพื่อที่จะโดดเด่นจริงๆ จากนั้นฉันก็หยุดคิดเรื่องนั้น
William Entriken

1
ขอบคุณ! ไม่มีคำตอบอื่นใดเลยที่บอกว่าอุปกรณ์ที่คุณใช้ไม่จำเป็นต้องเป็นอุปกรณ์ (หรือแม้แต่ประเภทอุปกรณ์) ที่เกิดความผิดพลาด
galactikuh

บันทึกย่อแบบด่วนเพราะสำหรับฉันมันจะไม่เป็นสัญลักษณ์อีกครั้ง ฉันต้องเปิด Organizer คลิกบิลด์ในคลังเก็บคลิกดาวน์โหลดสัญลักษณ์การดีบัก จากนั้นฉันสามารถเป็นสัญลักษณ์อีกครั้งในมุมมองบันทึกของอุปกรณ์ นี่เป็นบันทึกการชนที่ดาวน์โหลดจาก Apple หลังจากการตรวจสอบถูกปฏิเสธ
gregthegeek

28

ฉันใช้ Airbrake ในแอปของฉันซึ่งทำงานได้ดีในการบันทึกข้อผิดพลาดจากระยะไกล

นี่คือวิธีที่ฉันเป็นสัญลักษณ์ของพวกเขาด้วย atos หาก backtrace ต้องการ:

  1. ใน Xcode (4.2) ไปที่ผู้จัดงานคลิกขวาที่ไฟล์เก็บถาวรซึ่งสร้างไฟล์. ipa

  2. ใน Terminal ให้ใส่ซีดีลงใน xcarchiveเช่นMyCoolApp 10-27-11 1.30 PM.xcarchive

  3. ป้อนต่อไปนี้atos -arch armv7 -o 'MyCoolApp.app'/'MyCoolApp' (อย่าลืมคำพูดเดียว)

  4. ฉันไม่ได้รวมสัญลักษณ์ของฉันไว้ในการโทรนั้น สิ่งที่คุณจะได้รับคือเคอร์เซอร์บล็อกบนบรรทัดว่าง

  5. จากนั้นฉันก็คัดลอก / วางรหัสสัญลักษณ์ที่เคอร์เซอร์บล็อคนั้นแล้วกด Enter คุณจะเห็นสิ่งที่ชอบ:

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

  6. คุณกลับไปที่เคอร์เซอร์บล็อกและคุณสามารถวางในสัญลักษณ์อื่น ๆ ได้

ความสามารถในการติดตามย้อนหลังของคุณหนึ่งรายการโดยไม่ต้องป้อนบิตแรกเป็นการประหยัดเวลาที่ดี

สนุก!


28

ฉันยังใส่ 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


1
ฉันดูเอาต์พุต mdfind และไฟล์ dSYM สามารถมองเห็นได้อย่างชัดเจนโดยสปอตไลท์ อย่างไรก็ตามสคริปต์ symbolicatecrash ยังคงไม่ส่งผลอะไรที่แตกต่างจากรายงานข้อขัดข้อง แม้ใช้ข้อโต้แย้งที่คุณให้ไว้
Jasarien

สคริปต์ควรสร้างข้อความเตือนในตอนเริ่มต้นหากไม่สามารถค้นหา dsym ได้คุณสามารถมองหาสิ่งนั้นและดูสิ่งที่กล่าวได้หรือไม่
Kendall Helmstetter Gelner

ลองเพิ่ม "." หลังจากคำสั่งดังนั้นมันจะเป็น "symbolicatecrash -A -v MyApp.crashlog" . มันบังคับให้ค้นหาในไดเรกทอรีปัจจุบันหากยังไม่ได้ดำเนินการ
Kendall Helmstetter Gelner

ความหมาย "Can't exec" / usr / bin / xcode-select ": ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวที่ /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resources/Resources symbolicatecrash บรรทัด 49 "
bpapa

อุ๊ปส์เห็นได้ชัดว่ามีคำถาม SO อื่นสำหรับstackoverflow.com/questions/1859852/…
bpapa

21

เพียงคำตอบที่ง่ายและอัปเดตสำหรับ xcode 6.1.1

ขั้นตอน

1.Xcode> หน้าต่าง> อุปกรณ์

2. เลือกอุปกรณ์จากรายการอุปกรณ์ภายใต้ส่วนอุปกรณ์

3. เลือกดูบันทึกอุปกรณ์

4. ภายใต้ส่วนบันทึกทั้งหมดคุณสามารถลากวางรายงานได้โดยตรง

5. Xcode จะเป็นสัญลักษณ์ของรายงานความผิดพลาดให้คุณโดยอัตโนมัติ

6. คุณสามารถค้นหารายงานข้อขัดข้องแบบมีสัญลักษณ์ได้โดยการจับคู่วันที่ / เวลากับวันที่ / เวลาที่ระบุในรายงานข้อขัดข้องของคุณ


3
รายงานข้อขัดข้องที่ฉันดาวน์โหลดจาก Apple Resolution Center มักจะมีนามสกุลเป็น. txt อย่าลืมเปลี่ยนชื่อเป็น. crash มิฉะนั้นบันทึกของอุปกรณ์อาจปฏิเสธที่จะเพิ่ม ทำงานได้ดีกับ XCode ปัจจุบันของฉัน 6.3.1
Tony

3
นี่เป็นขั้นตอนอย่างเป็นทางการของ Apple ควรเป็นคำตอบ ลิงก์ของ Apple: หมายเหตุทางเทคนิค TN2151: การทำความเข้าใจและวิเคราะห์รายงานการขัดข้องของแอปพลิเคชัน iOS
Giammy

เราจะทำเช่นนี้ได้อย่างไรหากเกิดข้อผิดพลาดจาก Apple / iTunesConnect ดังนั้นในคำอื่น ๆ เราไม่ทราบจริงหรือมีอุปกรณ์ที่ผิดพลาดเกิดขึ้น?
galactikuh

14

แม้ว่าฉันจะพัฒนาแอพมาหลายปีแล้วนี่เป็นครั้งแรกที่ฉันทำการดีบักไบนารี่และฉันรู้สึกเหมือน NOOB ที่สมบูรณ์ในการหาว่าไฟล์ทั้งหมดอยู่ที่ไหนที่ไหนคือ * .app * .dSYM และบันทึกข้อผิดพลาด? ฉันต้องอ่านหลาย ๆ โพสต์เพื่อให้เข้าใจได้ รูปภาพมีค่าหนึ่งพันคำและฉันหวังว่าโพสต์นี้จะช่วยคนอื่นในอนาคต

1- ก่อนอื่นไปที่ iTunes เชื่อมต่อและดาวน์โหลดบันทึกข้อผิดพลาดของคุณ หมายเหตุ: เป็นกรณีส่วนใหญ่คุณอาจได้รับบางสิ่งเช่น "มีการส่งรายงานน้อยเกินไปที่จะแสดงรายงาน" โดยทั่วไปผู้ใช้ไม่เพียงพอที่ส่งรายงานบันทึกข้อผิดพลาดไปยัง Apple ในกรณีนี้คุณไม่สามารถทำอะไรได้มากในตอนนั้น

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

2- ตอนนี้ถ้าคุณไม่ได้เปลี่ยนรหัสของคุณตั้งแต่คุณส่งไบนารีไปยัง Apple จากนั้นเรียกใช้ Xcode สำหรับโครงการนั้นและทำ Product -> Archive อีกครั้ง มิฉะนั้นเพียงแค่ค้นหาไบนารีที่คุณส่งล่าสุดและคลิกขวา

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


8

ใน Xcode 4.2.1 ให้เปิดOrganizerจากนั้นไปที่Library / Device Logsและลากไฟล์. crash ของคุณไปยังรายการบันทึกข้อผิดพลาด มันจะเป็นสัญลักษณ์สำหรับคุณหลังจากนั้นไม่กี่วินาที

โปรดทราบว่าคุณต้องใช้อินสแตนซ์เดียวกันของ Xcode ที่มีการสร้างเก็บถาวรดั้งเดิมไว้ (เช่นที่เก็บถาวรสำหรับงานสร้างของคุณต้องมีอยู่ในOrganizer )


8

การใช้ Xcode 4 ทำให้งานง่ายขึ้น:

  • เปิดตัวจัดระเบียบ ,
  • คลิกที่Library | บันทึกอุปกรณ์ในคอลัมน์ด้านซ้าย
  • คลิกที่ปุ่ม " นำเข้า " ที่ด้านล่างของหน้าจอ ...

และvoilà ไฟล์บันทึกจะถูกนำเข้าและ Symbolized โดยอัตโนมัติสำหรับคุณ ระบุว่าคุณได้สร้างงานโดยใช้Xcode -> Product -> Archiveก่อน


1
แปลกพอนำเข้าไม่มีผล การใส่. app, .dSYM และ. crash จากนั้นเรียกใช้ symbolicatecrash ในไฟล์. crash (โดยไม่มีอาร์กิวเมนต์เพิ่มเติม) ทำงานแม้ว่า (XCode 4)
รัสเซีย

7

ผู้จัดการ Xcode ที่มีมนต์ขลังนั้นไม่ได้มีมนต์ขลังเกี่ยวกับสัญลักษณ์แอพของฉัน ฉันไม่มีสัญลักษณ์เลยสำหรับรายงานข้อขัดข้องที่ฉันได้รับคืนจาก Apple จากการส่งแอปที่ล้มเหลว

ฉันพยายามใช้บรรทัดคำสั่งวางรายงานความผิดพลาดในโฟลเดอร์เดียวกับไฟล์. app (ที่ฉันส่งไปยังร้านค้า) และไฟล์. dSYM:

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

นี่เป็นเพียงสัญลักษณ์สำหรับแอพของฉันไม่ใช่รหัสรากฐานหลัก แต่มันดีกว่าการถ่ายโอนหมายเลขที่ Organizer ให้ฉันและก็เพียงพอสำหรับฉันที่จะค้นหาและแก้ไขความผิดพลาดที่แอปของฉันมี หากใครรู้วิธีขยายสิ่งนี้เพื่อรับสัญลักษณ์ของมูลนิธิ


สำหรับคอร์รากฐาน dSYM คนที่แต่งตัวประหลาด (อาจเป็นคนจีน) ได้อัปโหลด dSYM บนไดรฟ์ google ที่ใช้ร่วมกันของเขาเพียงแค่ดาวน์โหลดและโยนไปยังโฟลเดอร์ "อุปกรณ์ที่รองรับ" แล้วมันจะถูกแก้ไข github.com/Zuikyo/iOS-System-Symbols
harunaga

6

ในกรณีของฉันฉันกำลังลากรายงานข้อขัดข้องโดยตรงจาก Mail ไปยังผู้จัด ด้วยเหตุผลบางอย่างที่ป้องกันไม่ให้รายงานข้อขัดข้องได้รับสัญลักษณ์ (ฉันชอบที่จะรู้ว่าทำไม)

การคัดลอกรายงานความผิดพลาดไปยังเดสก์ท็อปก่อนจากนั้นลากจากที่นั่นไปยังออแกไนเซอร์เพื่อให้เป็นสัญลักษณ์อย่างถูกต้อง

กรณีที่เฉพาะเจาะจงมากฉันรู้ แต่คิดว่าฉันจะแบ่งปันในกรณี


ฉันคิดว่านี่อาจเกี่ยวข้องกับสปอตไลท์ มีโอกาสที่ตำแหน่งที่ผู้จัดทำบันทึกของคุณไม่ได้ถูกจัดทำดัชนีโดยสปอตไลท์หรือไม่?
Jasarien

4

นี่คือปัญหาอื่นที่ฉันมีกับ symbolicatecrash - มันจะไม่ทำงานกับแอพที่มีช่องว่างในชุดข้อมูล (เช่น 'Test App.app') หมายเหตุฉันไม่คิดว่าคุณสามารถมีช่องว่างในชื่อของพวกเขาเมื่อส่งดังนั้นคุณควรลบสิ่งเหล่านี้ออกไป แต่ถ้าคุณมีปัญหาที่ต้องทำการวิเคราะห์อยู่ให้แก้ไข patchicatecrash (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\"";

สำหรับสิ่งที่คุ้มค่าฉันเติม rdar ลงในนี้และได้รับการแก้ไขใน [Redacted]
Alastair Stuart

4

สำหรับผู้ที่ใช้ Airbrake มีการตอบสนองที่แข็งแกร่งข้างต้น แต่มันจะไม่ทำงานสำหรับฉันโดยไม่ต้อง tweaking:

ใช้งานได้สำหรับบางที่อยู่หน่วยความจำ แต่ไม่ใช่ที่อื่นไม่แน่ใจว่าทำไม ...

  • สร้าง dir ใหม่บนเดสก์ท็อปหรือที่ใดก็ได้
  • ค้นหาที่เก็บถาวรในคำถามในตัวจัดระเบียบ Xcode
  • แตะสองครั้งเพื่อเปิดเผยในตัวค้นหา
  • แตะสองครั้งเพื่อแสดงเนื้อหาชุดรวม
  • คัดลอกไฟล์. dSYM และไฟล์. app ไปยัง dir ใหม่
  • cd เป็น dir ใหม่
  • รันคำสั่งนี้: atos -arch armv7 -o 'Vimeo.app' / 'Vimeo'
  • เทอร์มินัลจะเข้าสู่การเคลื่อนไหวแบบโต้ตอบ
  • วางที่อยู่หน่วยความจำและกด Enter มันจะออกชื่อวิธีการและหมายเลขบรรทัด
  • หรือป้อนคำสั่งนี้: atos -arch armv7 -o 'Vimeo.app' / 'Vimeo' เพื่อรับข้อมูลสำหรับที่อยู่เดียวเท่านั้น

4

ชุดค่าผสมที่เหมาะกับฉันคือ:

  1. คัดลอกไฟล์ dSYM ไปยังไดเรกทอรีที่รายงานข้อผิดพลาดเกิดขึ้น
  2. Unzip ไฟล์ ipa ที่มีแอพ ('unzip MyApp.ipa')
  3. คัดลอกไบนารีแอปพลิเคชันจากส่วนของข้อมูลที่ระเบิดไปยังโฟลเดอร์เดียวกันกับรายงานข้อขัดข้องและไฟล์สัญลักษณ์ (บางอย่างเช่น "MyApp.app/MyApp")
  4. นำเข้าหรือทำซ้ำรายงานความผิดพลาดจากภายในผู้จัดการของ Xcode

การใช้atosฉันไม่สามารถแก้ไขข้อมูลสัญลักษณ์ที่ถูกต้องด้วยที่อยู่และออฟเซ็ตที่อยู่ในรายงานข้อขัดข้อง เมื่อฉันทำสิ่งนี้ฉันเห็นสิ่งที่มีความหมายมากกว่าและดูเหมือนว่าจะเป็นการติดตามสแต็กที่ถูกต้องตามกฎหมาย


3

ฉันต้องแฮกสคริปต์สคริปสัญลักษณ์เพื่อให้มันทำงานได้อย่างถูกต้อง

เท่าที่ฉันสามารถบอกได้สัญลักษณ์เชิงลบในตอนนี้ต้องการแอป. อยู่ในไดเรกทอรีเดียวกับ. dsym มันจะใช้. dsym เพื่อค้นหา. app แต่จะไม่ใช้ dsym เพื่อค้นหาสัญลักษณ์

คุณควรทำสำเนาของสัญลักษณ์เชิงลบก่อนที่จะลองแก้ไขเหล่านี้ซึ่งจะทำให้มันดูใน dsym:

ประมาณบรรทัด 212 ในฟังก์ชัน getSymbolPathFor_dsymUuid

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

ประมาณบรรทัด 265 ในฟังก์ชัน matchUUID

265             return 1;

1

นี่เป็นเรื่องง่ายหลังจากค้นหามากฉันพบขั้นตอนที่ชัดเจนเพื่อเป็นสัญลักษณ์ของไฟล์บันทึกข้อขัดข้องทั้งหมด

  • คัดลอกไฟล์. app, crash_report และ DSYM ในโฟลเดอร์
  • เชื่อมต่ออุปกรณ์ด้วย xcode
  • จากนั้นไปที่หน้าต่าง -> เลือกอุปกรณ์ -> ดูบันทึกอุปกรณ์
  • จากนั้นเลือกอุปกรณ์นี้ลบบันทึกทั้งหมด
  • ลากและวางความผิดพลาดของคุณในส่วนของบันทึกอุปกรณ์ มันจะเป็นสัญลักษณ์ของความผิดพลาดโดยอัตโนมัติ เพียงคลิกขวาที่รายงานและส่งออก

การเขียนโค้ดที่มีความสุข
Riyaz


คำตอบสั้น ๆ และหวานที่สุดทำตามแต่ละขั้นตอนที่เขียนในคำตอบนี้ developer.apple.com/library/content/technotes/tn2151/?hl=thตามลิงค์นี้เพื่อค้นหาความแตกต่างระหว่าง unsymbolicated และสัญลักษณ์อย่างเต็มที่
Ninad Kambli

1

ฉันชอบสคริปต์ที่จะเป็นสัญลักษณ์บันทึกการล่มทั้งหมดของฉัน

ปัจจัยพื้นฐาน

สร้างโฟลเดอร์และใส่สิ่งที่ 4:

  1. symbolicatecrash สคริปต์ perl - มีคำตอบมากมายที่บอกตำแหน่งของมัน

  2. การเก็บถาวรของบิลด์ที่ตรงกับข้อขัดข้อง (จาก Xcode Organizer ง่าย ๆShow in Finderและคัดลอก) [ฉันไม่แน่ใจว่านี่เป็นสิ่งจำเป็น]

  3. xccrashpointแพ็คเกจทั้งหมด- (จาก Xcode Organizer 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 ""

สคริปต์

เมื่อคุณเรียกใช้สคริปต์คุณจะได้รับ 2 ไดเรกทอรี

  1. allCrashes- การล่มทั้งหมดจากทั้งหมดxccrashpointจะอยู่ที่นั่น

  2. symboledCrashes - ล่มเหมือนกัน แต่ตอนนี้มีสัญลักษณ์ทั้งหมด

  3. คุณไม่จำเป็นต้องล้างไดเรกทอรีจากข้อขัดข้องเก่าก่อนที่จะเรียกใช้สคริปต์ มันจะทำความสะอาดโดยอัตโนมัติ โชคดี!


1

ฉันพบว่าทางเลือกที่เสนอส่วนใหญ่ไม่ทำงานใน XCode ล่าสุด (ทดสอบด้วย Xcode 10) ตัวอย่างเช่นฉันไม่มีโชคลากวางไฟล์. crash ใน Xcode -> Organizer -> อุปกรณ์บันทึก - ดู

ฉันแนะนำให้ใช้เครื่องมือ Symbolicator https://github.com/agentsim/Symbolicator

  • ที่เก็บ Git clone Symbolicator และคอมไพล์แล้วรันด้วย Xcode
  • คัดลอกไฟล์. crash (ไฟล์ ascii ที่มีการติดตามสแต็กในการขอร้องไฟล์) และ. xarchive ของการรีลีสการกระแทกไปยังโฟลเดอร์ temporarly เดียวกัน
  • ลากและวางไฟล์. crash ไปที่ไอคอน Symbolicator ใน Dock
  • ใน 5-30 วินาทีไฟล์ความผิดพลาดที่เป็นสัญลักษณ์ถูกสร้างขึ้นในโฟลเดอร์เดียวกับ. crash และ. xarchive

0

เพื่อเป็นสัญลักษณ์ของการขัดข้อง Spotlight ต้องสามารถค้นหาไฟล์. dSYM ที่สร้างขึ้นในเวลาเดียวกันกับไบนารีที่คุณส่งไปยัง Apple เนื่องจากมันมีข้อมูลสัญลักษณ์คุณจะโชคไม่ดีถ้าไม่มีข้อมูล


หากคุณอ่านคำถามฉันระบุว่าฉันได้บันทึกไฟล์ dSYM ดั้งเดิมที่สร้างขึ้นในเวลาเดียวกันกับที่ส่งไบนารีแล้ว
Jasarien

0

ฉันรู้สึกไม่พอใจกับความจริงที่ว่าไม่มีอะไรที่นี่ดูเหมือนจะ "ทำงาน" ดังนั้นฉันจึงตรวจสอบและผลลัพธ์คือ:

ตั้งค่า: QuincyKit back end ที่ได้รับรายงาน ไม่มีการตั้งค่าสัญลักษณ์เนื่องจากฉันไม่สามารถแม้แต่จะเริ่มคิดออกได้ว่าพวกเขาแนะนำให้ทำอะไร

การแก้ไข: ดาวน์โหลดรายงานความผิดพลาดจากเซิร์ฟเวอร์ออนไลน์ พวกเขากำลังเรียกว่า 'ความผิดพลาด' และโดยค่าเริ่มต้นไปที่ ~ / Downloads / โฟลเดอร์ เมื่อทราบแล้วสคริปต์นี้จะ "ทำสิ่งที่ถูกต้อง" และรายงานข้อขัดข้องจะเข้าสู่ 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 Organizer โดยทำสองสิ่งถ้าคุณใช้ QuincyKit / PLCR

ประการแรกคุณต้องแก้ไขสคริปต์ระยะไกล admin / actionapi.php ~ บรรทัด 202 ดูเหมือนจะไม่ได้รับการบันทึกเวลาที่ถูกต้องดังนั้นไฟล์จึงจบลงด้วยชื่อ 'crash' ซึ่ง Xcode ไม่รู้จัก (ต้องการบางสิ่งบางอย่าง จุดชน):

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

ประการที่สองในด้าน iOS ใน QuincyKit BWCrashReportTextFormatter.m ~ สาย 176 การเปลี่ยนแปลง@"[TODO]"เพื่อ@"TODO"ที่จะได้รอบตัวละครที่ไม่ดี


0

atos กำลังเลิกใช้ดังนั้นหากคุณใช้ OSX 10.9 ขึ้นไปคุณอาจต้องเรียกใช้

xcrun atos

คำเตือน: / usr / bin / atos มีการเคลื่อนไหวและจะถูกลบออกจากการเปิดตัว OS X ในอนาคต ขณะนี้พร้อมใช้งานในเครื่องมือนักพัฒนา Xcode ที่จะเรียกใช้ผ่าน:xcrun atos


ดูเหมือนว่า Apple อนุญาตให้ฟอร์แมต DWARF แปรเปลี่ยนไปตามการเปิดตัวเครื่องมือแต่ละครั้ง (ดูสมเหตุสมผลโดยเฉพาะการถือกำเนิดของ Swift) ดังนั้นพวกเขาจึงย้ายไปที่เครื่องมือ distro
David Gish

0

ฉันชอบที่จะใช้ Textwrangler เพื่อระบุข้อผิดพลาดในแอปดั้งเดิมที่อัปโหลดการปฏิเสธไบนารี (ข้อมูลความผิดพลาดจะอยู่ในบัญชี itunesConnect ของคุณ) ใช้วิธีการของ Sachin ด้านบนฉันคัดลอก original.crash ไปที่ TextWrangler แล้วคัดลอกไฟล์ symbolicatecrash ที่ฉันสร้างขึ้นไปยังไฟล์ TextWrangler อื่น การเปรียบเทียบความแตกต่างสองไฟล์ระบุจุดแตกต่าง ไฟล์ symbolicatecrash จะมีความแตกต่างซึ่งชี้ให้เห็นไฟล์และหมายเลขบรรทัดของปัญหา


-2

เราใช้ Google Crashlytics เพื่อควบคุมบันทึกข้อผิดพลาดความรู้สึกนั้นทันเวลาและสะดวกในการใช้งาน

ลิงค์เอกสาร: https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#missing-dsyms

ทุกอย่างเกี่ยวกับ Missing dSYMs Fabric รวมถึงเครื่องมือในการอัพโหลด dSYM ของโครงการของคุณโดยอัตโนมัติ เครื่องมือจะดำเนินการผ่าน / สคริปต์รันซึ่งจะถูกเพิ่มลงใน Run Script Build Phase ของคุณในระหว่างกระบวนการออนบอร์ด อย่างไรก็ตามอาจมีบางสถานการณ์เมื่อการอัปโหลด dSYM ล้มเหลวเนื่องจากการกำหนดค่าโครงการที่ไม่ซ้ำกันหรือหากคุณใช้ Bitcode ในแอปของคุณ เมื่อการอัปโหลดล้มเหลว Crashlytics จะไม่สามารถเป็นสัญลักษณ์และแสดงข้อขัดข้องและการแจ้งเตือน“ Missing dSYM” จะปรากฏบนแดชบอร์ด Fabric ของคุณ

dSYM ที่ขาดหายไปสามารถอัปโหลดด้วยตนเองได้ตามขั้นตอนที่อธิบายไว้ด้านล่าง

หมายเหตุ: เป็นอีกทางเลือกหนึ่งของเครื่องมืออัพโหลด dSYM อัตโนมัติ Fabric นำเสนอเครื่องมือบรรทัดคำสั่ง (สัญลักษณ์อัพโหลด) ซึ่งสามารถกำหนดค่าด้วยตนเองเพื่อให้ทำงานเป็นส่วนหนึ่งของกระบวนการสร้างโครงการของคุณ ดูที่ส่วนสัญลักษณ์อัพโหลดด้านล่างสำหรับคำแนะนำในการกำหนดค่า

...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.