วิธีการแทนสัญลักษณ์ข้อผิดพลาด Xcode?


189

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


3
ฉันถามเมื่อหลายเดือนก่อนในฟอรัมนักพัฒนาของ Appleและไม่เคยได้รับคำตอบ นี่คือการสูญเสียการทำงานที่มีประโยชน์ ยื่นรายงานข้อผิดพลาดกับ Apple เพื่อขอให้ใช้คุณสมบัตินี้กลับ
rmaddy

1
ฉันเคาะสิ่งนี้ด้วยกันในช่วงสุดสัปดาห์เพื่อแก้ปัญหาสัญลักษณ์สำหรับทั้งทิ้ง iOS และ OSX มันยังหยาบมาก แต่ควรใช้งานได้ github.com/agentsim/Symbolicator
ทิม

4
Xcode คุณช่วยกรุณาเพียงแค่ --- บันทึกข้อผิดพลาดที่เป็นสัญลักษณ์จากผู้ตรวจสอบของ Apple อย่างที่คุณควรจะ ... แทนที่จะคิดว่าเรามีตัวอักษรตลอดทั้งวันเพื่อหาวิธีการทำเช่นนี้?
William Entriken

คำตอบ:


120

ตกลงฉันรู้ว่าคุณสามารถทำได้:

  1. ในXcode > Window > Devicesเลือก iPhone / iPad / etc ที่เชื่อมต่อซ้ายบน
  2. ดูบันทึกอุปกรณ์
  3. บันทึกทั้งหมด

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

  1. เพียงลากและวางไฟล์ของคุณลงในรายการนั้น มันใช้งานได้สำหรับฉัน

13
ฉันมีปัญหาเดียวกัน แต่ไม่สามารถแก้ปัญหาได้สำหรับฉัน - บันทึกที่ฉันลากและวางลงในหน้าต่างจะปรากฏขึ้น แต่ไม่มีสัญลักษณ์
Arkaaito

9
เคล็ดลับคือคุณต้องเชื่อมต่ออุปกรณ์และเลือกอุปกรณ์จากรายการ ฉันคิดว่ามันเป็นไปไม่ได้หากไม่มีอุปกรณ์
จอนนี่

60
.crashเพื่อให้ไฟล์ผิดพลาดของคุณจะลากเข้าไปในรายการที่มันควรจะมีการขยาย
pjay_

7
ขั้นตอนที่ขาดหายไปสำหรับฉันคือเมื่อไฟล์ถูกทิ้งฉันต้องคลิกเมาส์ขวาที่ไฟล์และบันทึกสัญลักษณ์อีกครั้ง
RobCroll

6
อย่าลืม "ดาวน์โหลด dSYMs" สำหรับที่เก็บถาวรนั้นภายใน Organizer
123FLO321

259

เขียนคำตอบนี้ให้มากที่สุดสำหรับชุมชนเพื่อตัวฉันเอง

หากเคยมีปัญหาที่เป็นสัญลักษณ์ของรายงานข้อขัดข้องหนึ่งสามารถเอาชนะพวกเขาได้ดังต่อไปนี้:

  1. สร้างโฟลเดอร์แยกต่างหากคัดลอกFoo.appและสร้างFoo.app.dSYMจาก.xcarchiveโฟลเดอร์ที่เกี่ยวข้อง คัดลอก.crashรายงานไปยังโฟลเดอร์ด้วย

  2. เปิดรายงานข้อขัดข้องใน TextEdit หรือที่อื่นไปที่Binary Images:ส่วนและคัดลอกที่อยู่แรกที่นั่น (เช่น0xd7000)

  3. cdเข้าไปในโฟลเดอร์ ตอนนี้คุณสามารถรันคำสั่งต่อไปนี้:

    xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb

นี้จะ symbolicate 0x0033f9bbสัญลักษณ์ที่อยู่ที่ โปรดตรวจสอบให้แน่ใจว่าได้เลือกค่าที่ถูกต้องสำหรับ-archตัวเลือก (สามารถ obtaned จากบรรทัดแรกในBinary Images:ส่วนหรือคิดออกจากHardware Model:ในรายงานความผิดพลาดและส่วนรองรับที่รองรับของแอป)

คุณสามารถคัดลอกที่อยู่ที่จำเป็น (เช่นการเรียกเธรดเรียกซ้อน) จากรายงานข้อขัดข้องลงในไฟล์ข้อความโดยตรง (ใน TextEdit กดตัวเลือกค้างไว้แล้วเลือกบล็อกข้อความที่จำเป็นหรือคัดลอกและตัด) เพื่อรับสิ่งนี้:

0x000f12fb
0x002726b7
0x0026d415
0x001f933b
0x001f86d3

ตอนนี้คุณสามารถบันทึกลงในไฟล์ข้อความเช่นaddr.txtและเรียกใช้คำสั่งต่อไปนี้:

xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt

นี่จะเป็นสัญลักษณ์ที่ดีสำหรับที่อยู่ทั้งหมดในครั้งเดียว

PS

ก่อนที่จะทำดังกล่าวข้างต้นก็คุ้มค่าการตรวจสอบว่าทุกอย่างที่มีการตั้งค่าอย่างถูกต้อง (ตามที่atosมีความสุขจะรายงานบางอย่างสำหรับพื้นใด ๆ ที่อยู่มาด้วย)

การทำเช่นการตรวจสอบให้เปิดรายงานความผิดพลาดและไปยังจุดสิ้นสุดของสาย stack Thread 0สำหรับ บรรทัดแรกจากท้ายสุดเพื่อแสดงรายการแอปของคุณ (โดยปกติจะเป็นบรรทัดที่สอง) เช่น:

34  Foo                    0x0033f9bb 0xd7000 + 2525627

ควรเป็นmain()สาย สัญลักษณ์ที่อยู่ ( 0x0033f9bbในกรณีนี้) ตามที่อธิบายไว้ข้างต้นควรยืนยันว่านี่เป็นจริงmain()วิธีการและฟังก์ชั่นแบบสุ่ม

หากที่อยู่ไม่ใช่ของmain()ให้ตรวจสอบที่อยู่โหลดของคุณ ( -lตัวเลือก) และ arch (-archตัวเลือก)

PPS

หากข้อมูลด้านบนใช้งานไม่ได้เนื่องจากบิตโค้ดให้ดาวน์โหลด dSYM สำหรับงานบิลด์ของคุณจาก iTunes Connect แยกไบนารีที่สามารถเรียกใช้งานได้จาก dSYM (Finder> แสดงเนื้อหาแพ็คเกจ) คัดลอกลงในไดเรกทอรีและใช้ (เช่นFoo) เป็น อาร์กิวเมนต์แทนatosFoo.app/Foo


2
ขอบคุณสำหรับปัญหาในการเขียนมินิ xcrun tutorial และอัปเดตด้วยส่วนตรวจสอบสติ สติของฉันได้รับการช่วยเหลือหลังจากสาบานมากมายและไม่มีสัญลักษณ์ใด ๆ ในสายตา
Anton Tropashko

10
อย่าลืมตรวจสอบว่ารายงานข้อขัดข้องตรงกับไฟล์สั่งการและ dSYM คุณสามารถตรวจสอบสิ่งนี้ได้โดยจับคู่ตัวระบุใน <> ของภายใต้ส่วนรูปไบนารีกับที่ส่งคืนจากแฟ้มที่ปฏิบัติการได้ของคุณโดยเรียกใช้xcrun dwarfdump --uuid <path to executable>
Ryan C. Payne

2
สิ่งสำคัญคือให้สังเกตว่ามีเพียงสัญลักษณ์จากแอพของคุณ (Foo) เท่านั้นที่จะปรากฏ มันจะไม่ปรากฏขึ้นสำหรับสัญลักษณ์จากไลบรารี / กรอบงานภายนอกเช่นมูลนิธิหรือ libsystem_kernel.dylib
jlukanta

1
สิ่งนี้มีประโยชน์ แต่ก็ไม่ได้ผลสำหรับฉัน ส่วนที่ฉันมีปัญหาคือฉันไม่มีข้อมูล 0xd7000 บรรทัดของฉันมีลักษณะเช่นนี้ 0x100038328 __mh_execute_header + 99112 ฉันได้อ่านสิ่งที่ __mh_execute_header คืออะไร แต่ฉันจะรับข้อมูลเกี่ยวกับ 0x100038328 ได้อย่างไร ฉันมีทุกอย่างอื่น
skinsfan00atg

5
ฉันเขียนสคริปต์ทุบตีง่ายๆที่ทำงานให้คุณได้มากที่สุด การใช้งาน: ./symbolicate.sh mycrash.crash MyApp.app arch64 output.crash มันจะเป็นเพียงสัญลักษณ์ของรายงานความผิดพลาดแบบเต็มและให้เวอร์ชันที่เป็นสัญลักษณ์ของมัน gist.github.com/nathan-fiscaletti/…
นาธานเอฟ

187

คุณสามารถอ้างถึงสิ่งนี้เช่นกันฉันได้เขียนขั้นตอนตามขั้นตอนของการทำสัญลักษณ์การชนกันด้วยตนเอง

Crash Re-Symbolication

ขั้นตอนที่ 1

ย้ายไฟล์ทั้งหมดข้างต้น (MyApp.app, MyApp-dSYM.dSYM และ MyApp-Crash-log.crash) ไปยังโฟลเดอร์ที่มีชื่อสะดวกทุกที่ที่คุณสามารถใช้ Terminal ได้อย่างง่ายดาย

สำหรับฉันแล้ว Desktop เป็นสถานที่ที่เข้าถึงได้ง่ายที่สุด) ดังนั้นฉันจึงย้ายไฟล์ทั้งสามนี้ไปไว้ในโฟลเดอร์ MyApp ที่ Desktop

ขั้นตอนที่ 2

ตอนนี้ Turn of Finder ไปที่เส้นทางจากการติดตามแล้วแต่รุ่นใดจะใช้กับรุ่น XCODE ของคุณ

ใช้คำสั่งนี้เพื่อค้นหาsymbolicatecrashไฟล์สคริปต์
find /Applications/Xcode.app -name symbolicatecrash

Xcode 8, Xcode 9, Xcode 11 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

Xcode 7.3 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

XCode 7 /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash

Xcode 6 /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources

ต่ำกว่าจากนั้น Xcode 6 Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources

หรือ Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources

ขั้นตอนที่ 3

เพิ่มไดเร็กทอรีของไฟล์สคริปต์ symbolicatecrash ที่พบเพื่อ$PATHenv ตัวแปรเช่นนี้: sudo vim /etc/paths.d/Xcode-symbolicatecrashและวางไดเร็กทอรีของไฟล์สคริปต์และบันทึกไฟล์ เมื่อเปิดเทอร์มินัลใหม่คุณสามารถโทรไปsymbolicatecrashที่โฟลเดอร์ใดก็ได้ตามคำสั่งที่อยู่ใน/usr/binที่เป็นคำสั่งที่ตั้งอยู่ใน

หรือ

คัดลอกไฟล์ symbolicatecrash จากตำแหน่งนี้และวางลงบนเดสก์ท็อป / MyApp (รอ ... อย่าติดตามฉันอย่างสุ่มสี่สุ่มห้าฉันกำลังวางไฟล์ sybolicatecrash ในโฟลเดอร์ MyApp หนึ่งไฟล์ที่คุณสร้างในขั้นตอนเดียวในตำแหน่งที่คุณชื่นชอบโดยมีสามไฟล์ )

ขั้นตอนที่ 4

เปิด Terminal และ CD ไปที่โฟลเดอร์ MyApp

cd Desktop/MyApp — Press Enter
export DEVELOPER_DIR=$(xcode-select --print-path)

 -  กด Enter

./symbolicatecrash -v MyApp-Crash-log.crash MyApp.dSYM

 -  กด Enter

แค่นั้นแหละ !! บันทึกที่เป็นสัญลักษณ์อยู่บนเทอร์มินัลของคุณ…ตอนนี้คุณจะรออะไรอยู่ ตอนนี้เพียงแค่ค้นหาข้อผิดพลาดและแก้ไข;)

Happy Coding !!!


2
@ EmilVikström: ขอบคุณสำหรับคำแนะนำได้อัปเดตคำตอบแล้ว
Mrug

2
ใช้ export DEVELOPER_DIR =xcode-select --print-path
Parag Bafna

8
ใช้การรักษา - ขอบคุณ สิ่งหนึ่งที่ฉันต้องใช้ส่งออก DEVELOPER_DIR = / Applications / XCode.app / เนื้อหา / นักพัฒนา (โดยไม่ต้องใส่เครื่องหมายอัญประกาศ)
goelectric

1
"export DEVELOPER_DIR = xcode-select --print-path" เพียงแค่บอกฉัน "-bash: export:` - print-path ': ไม่ใช่ตัวระบุที่ถูกต้อง
Almo

2
อัปเดต; นี่มันคือ; สำหรับ xcode7 ค้นหา symbolicatecrash ที่นี่; /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash ต่อstackoverflow.com/questions / 32804611 / …
AnneTheAgile

28

สำหรับฉันไฟล์. crash นั้นเพียงพอแล้ว ไม่มีไฟล์. dSYM และไฟล์. app

ฉันรันทั้งสองคำสั่งบน mac ที่ฉันสร้างที่เก็บถาวรและทำงานได้:

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" 

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash  /yourPath/crash1.crash > /yourPath/crash1_symbolicated.crash

ว้าว. ฉันไม่ทราบวิธีการทำงานโดยไม่ใช้ไฟล์. dsym แต่ใช้งานได้!
rustyMagnet

4
@rustyMagnet วิธีการทำงานคือการใช้ dsyms จากบิลด์ที่เก็บถาวรบนคอมพิวเตอร์ของคุณ
Andrey Tarantsov

1
ใช่มันใช้งานได้เฉพาะงานสร้างที่คุณเก็บถาวรด้วย Xcode ไม่ใช่งานสร้างอื่น ๆ ที่คุณอาจสร้างขึ้นสำหรับโฆษณาเฉพาะกิจที่คุณต้องการเป็นสัญลักษณ์บันทึกการชน
CMash

21

มีวิธีที่ง่ายกว่าในการใช้ Xcode (โดยไม่ต้องใช้เครื่องมือบรรทัดคำสั่งและค้นหาที่อยู่ทีละรายการ)

  1. ใช้ไฟล์. xcarchive ใด ๆ หากคุณมีหนึ่งก่อนคุณสามารถใช้ หากคุณไม่มีให้สร้างขึ้นมาโดยการเรียกใช้ผลิตภัณฑ์> เก็บถาวรจาก Xcode

  2. คลิกขวาที่ไฟล์. xcarchive และเลือก 'Show Package Contents'

  3. คัดลอกไฟล์ dsym (เวอร์ชันของแอปที่ผิดพลาด) ไปยังโฟลเดอร์ dSYMs

  4. คัดลอกไฟล์. app (ของเวอร์ชันแอพที่ผิดพลาด) ไปยังโฟลเดอร์ Products> Applications

  5. แก้ไข Info.plist และแก้ไข CFBundleShortVersionString และ CFBundleVersion ภายใต้พจนานุกรม ApplicationProperties นี่จะช่วยให้คุณระบุที่เก็บถาวรได้ในภายหลัง

  6. ดับเบิลคลิกที่. xcarchive เพื่ออิมพอร์ตไปยัง Xcode มันควรเปิด Organizer

  7. กลับไปที่บันทึกข้อผิดพลาด (ในหน้าต่างอุปกรณ์ใน Xcode)

  8. ลากไฟล์. crash ของคุณไปที่นั่น (หากยังไม่ปรากฏ)

  9. บันทึกความผิดพลาดทั้งหมดควรเป็นสัญลักษณ์ หากไม่เป็นเช่นนั้นให้คลิกขวาและเลือก 'บันทึกการชนกันของข้อมูลซ้ำ'


1
คำตอบของคุณถูกต้องและเรียบง่าย ไม่จำเป็นต้องใช้แอพ Terminal การพักผ่อนหย่อนใจของโฟลเดอร์. xcarchive มีความสำคัญมากเนื่องจากไม่มีไฟล์. xcarchive ในระบบการรวมต่อเนื่องบางระบบแทนที่จะเป็นไฟล์ zip ของโฟลเดอร์. app.dSYM โดยบังเอิญสิ่งที่ฉันทำเมื่อวานนี้เป็นสิ่งเดียวกันกับที่คุณพูด
DawnSong

ผลลัพธ์แบบเต็มควรเป็นอย่างไร
noobsmcgoobs

นี่เป็นสัญลักษณ์บางส่วนของบันทึกข้อขัดข้องของฉันแม้ว่าฉันจะข้ามขั้นตอนที่ 3-5 ไปแล้วเนื่องจาก xcarchive ของฉันใช้สำหรับแอพเวอร์ชันที่ล้มเหลว
Declan McKenna

1
มันจะเป็นเพียงสัญลักษณ์ของหลักสูตรของคุณเอง - ไม่ใช่รหัสไลบรารีภายนอกที่คุณอาจใช้
RPM

7

ทำตามขั้นตอนเหล่านี้ใน Xcode 10 เพื่อเป็นสัญลักษณ์บันทึกข้อผิดพลาดจากแอปบิลด์บนเครื่องเดียวกัน:

  1. ภายในออแกไนเซอร์ค้นหาตำแหน่งเก็บถาวรโดยใช้แอพ
  2. คลิกที่ดาวน์โหลด Debug สัญลักษณ์ปุ่ม จะไม่มีสิ่งใดปรากฏในโฟลเดอร์ดาวน์โหลดของคุณ แต่ก็ไม่เป็นไร
  3. เชื่อมต่อเครื่องบิลด์กับอุปกรณ์ iOS
  4. เลือกอุปกรณ์ในอุปกรณ์และตัวจำลองอุปกรณ์และซิมูเลเตอร์
  5. คลิกที่ดูอุปกรณ์บันทึกปุ่ม
  6. ลากแล้วปล่อยไฟล์ขัดข้องไปที่แผงด้านซ้าย ไฟล์จะต้องลงท้ายด้วย. crashนามสกุล.มิฉะนั้นการลากล้มเหลว
  7. สลับไปที่แท็บบันทึกทั้งหมด
  8. เลือกไฟล์ความผิดพลาดที่เพิ่มเข้ามา
  9. ไฟล์ควรอัตโนมัติ symbolicate มิฉะนั้นใช้คลิกขวาเมนูบริบทรายการRe-Symbolicate เข้าสู่ระบบ

1
ตอนแรกฉันไม่คิดว่านี่เป็นการเพิ่มอะไรให้กับโพสต์อื่น ๆ แต่สองขั้นตอนแรกโดยเฉพาะ 'สัญลักษณ์การดีบักดาวน์โหลด' ดูเหมือนจะเป็นสิ่งที่ฉันพลาดไป ขอบคุณ.
Christopher King

6

หากคุณมีไฟล์. dSYM และไฟล์. crash อยู่ในโฟลเดอร์ย่อยเดียวกันนี่คือขั้นตอนที่คุณสามารถทำได้:

  1. ดูที่ backtrace ในไฟล์. crash สังเกตชื่อของภาพไบนารีในคอลัมน์ที่สองและที่อยู่ในคอลัมน์ที่สาม (เช่น 0x00000001000effdc ในตัวอย่างด้านล่าง)
  2. ภายใต้ backtrace ในส่วน "ภาพไบนารี" ให้สังเกตชื่อภาพสถาปัตยกรรม (เช่นแขน 64) และที่อยู่โหลด (0x1000e4000 ในตัวอย่างด้านล่าง) ของภาพไบนารี (เช่น TheElements)
  3. ดำเนินการต่อไปนี้:

$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc -[AtomicElementViewController myTransitionDidStop:finished:context:]

แหล่งข้อมูลที่เชื่อถือได้: https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS


4

Xcode 11.2.1, ธันวาคม 2019

Apple ให้บันทึกข้อขัดข้องในรูปแบบ. txt ซึ่งไม่ได้บอกกล่าว

**

ด้วยอุปกรณ์ที่เชื่อมต่อ

**

  • ดาวน์โหลดไฟล์ ".txt" เปลี่ยนนามสกุลเป็น ".crash" ป้อนคำอธิบายรูปภาพที่นี่
    • เปิดอุปกรณ์และตัวจำลองจากแท็บหน้าต่างใน Xcode
    • เลือกอุปกรณ์และเลือกบันทึกอุปกรณ์
    • ลากและวางไฟล์. crash ไปยังหน้าต่างบันทึกของอุปกรณ์

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

เราจะสามารถดูบันทึกข้อผิดพลาดที่เป็นสัญลักษณ์ได้

โปรดดูลิงก์สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Symbolicating Crash logs


ว้าว. การเปลี่ยนนามสกุลไฟล์จาก. txt เป็น. crash ทำได้ พวกเขาให้ไฟล์. txt แก่ฉัน ขอบคุณชาย ไม่อยากเชื่อเลยว่าคำตอบของคุณอยู่ในระดับต่ำ
datWooWoo

3

ตรวจสอบให้แน่ใจว่าชื่อแอปพลิเคชัน Xcode ของคุณไม่มีช่องว่างใด ๆ นี่คือเหตุผลที่มันไม่ทำงานสำหรับฉัน ใช้/Applications/Xcode.appงานได้ แต่/Applications/Xcode 6.1.1.appไม่ได้ผล


คุณเคยลองไหม ถ้าไม่โปรดลองและดูว่าความคิดเห็นของคุณมีเหตุผลหรือไม่
Bouke

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

1
@ChuckKrutsinger คุณได้ลองจริงหรือไม่? เนื่องจากช่องว่างที่หลบหนีจะช่วยให้คุณเรียกใช้สคริปต์ได้ แต่สคริปต์จะไม่ทำงาน สคริปต์อาจไม่เรียกสคริปต์อื่นด้วยช่องว่างที่หลบหนี
Bouke

1
@ChuckKrutsinger เป็นคนดีมากและทั้งหมด แต่ถ้าต้องการให้ Xcode เป็นสัญลักษณ์ของบันทึกข้อผิดพลาดโดยอัตโนมัติคุณจะต้องตอบคำถามของฉันในท้ายที่สุด
Bouke

1
ฉันต้องการย้ำอีกครั้งว่า bouke นั้นถูกต้องและหากคุณมีช่องว่างในพา ธ สำหรับแอป Xcode สคริปต์ Xcode จะใช้เพื่อบันทึกสัญลักษณ์การทำงานผิดพลาดอีกครั้งจะไม่ทำงาน ไม่มีส่วนเกี่ยวข้องกับการทำสัญลักษณ์ซ้ำด้วยตนเอง
Gary Makin

2

จากเอกสารของ Apple:

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

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

    1. แอปพลิเคชันที่เสียหายของไฟล์ไบนารีและ dSYM

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

    3. สัญลักษณ์สำหรับระบบปฏิบัติการที่แอปพลิเคชันนั้นทำงานเมื่อมันล้มเหลว สัญลักษณ์เหล่านี้มีข้อมูลการดีบักสำหรับเฟรมเวิร์กที่รวมอยู่ในการวางจำหน่ายระบบปฏิบัติการเฉพาะ (เช่น iOS 9.3.3) สัญลักษณ์ระบบปฏิบัติการเป็นสถาปัตยกรรมเฉพาะ - รุ่นของ iOS สำหรับอุปกรณ์ 64 บิตจะไม่รวมสัญลักษณ์ armv7 Xcode จะคัดลอกสัญลักษณ์ระบบปฏิบัติการโดยอัตโนมัติจากอุปกรณ์แต่ละเครื่องที่คุณเชื่อมต่อกับ Mac ของคุณ

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


2

กระบวนการที่ง่ายที่สุดในการทำสัญลักษณ์บันทึกข้อผิดพลาด:

  1. เก็บรักษาไฟล์ xcarchive จากผู้จัดในระหว่างกระบวนการสร้าง IPA เพื่อใช้ในอนาคต
  2. เมื่อเกิดข้อขัดข้องให้รวบรวมบันทึกข้อผิดพลาดจากอุปกรณ์ที่ได้รับผลกระทบ นามสกุลควรเป็น. crash หากบันทึกข้อผิดพลาดอยู่ในรูปแบบ .ips ให้เปลี่ยนชื่อเป็น. crash
  3. ดับเบิ้ลคลิกที่ xcarchive จากพา ธ ที่เก็บไว้เพื่อให้ปรากฏในออแกไนเซอร์ (ถ้าไม่มีอยู่)
  4. เปิดในหน้าต่าง xcode-> อุปกรณ์และตัวจำลอง -> ดูบันทึกอุปกรณ์ -> บันทึกทั้งหมด -> ลากและวางไฟล์. crash

รอ 5 วินาที ปัง แอปพลิเคชันที่เรียกใช้ในการติดตามสแต็กจะเป็นสัญลักษณ์! คุณยังอาจเห็นสัญลักษณ์มากมาย! นั่นคือการเรียกใช้ไลบรารีและกรอบงานภายใน

นี่คือหนึ่งที่ง่ายที่สุดพยายามและทดสอบ!


1

Apple ให้บันทึกข้อขัดข้องในรูปแบบ. txt ซึ่งไม่ได้บอกกล่าว

**

ด้วยอุปกรณ์ที่เชื่อมต่อ

**

  • ดาวน์โหลดไฟล์ ".txt" เปลี่ยนนามสกุลเป็น ".crash" ป้อนคำอธิบายรูปภาพที่นี่
    • เปิดอุปกรณ์และตัวจำลองจากแท็บหน้าต่างใน Xcode
    • เลือกอุปกรณ์และเลือกบันทึกอุปกรณ์
    • ลากและวางไฟล์. crash ไปยังหน้าต่างบันทึกของอุปกรณ์

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

เราจะสามารถดูบันทึกข้อผิดพลาดที่เป็นสัญลักษณ์ได้

โปรดดูลิงก์สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Symbolicating Crash logs

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