บันทึกข้อขัดข้องที่สร้างโดย iPhone Simulator?


98

มีบันทึกข้อขัดข้องที่สร้างโดย iPhone Simulator หรือไม่?

Simulator ล้มเหลวมาก แต่ไม่ทิ้งร่องรอยใด ๆ ในคอนโซล ... บันทึกข้อขัดข้องจะเป็นประโยชน์


2
ฉันไม่ค่อยเข้าใจว่าทำไมคุณถึงต้องการบันทึกข้อขัดข้อง เมื่อแอปในโปรแกรมจำลองขัดข้อง แต่ก่อนที่คุณจะหยุดการดีบักให้พิมพ์ "bt" สำหรับ "backtrace" ที่พร้อมท์ gdb คุณจะได้รับสิ่งที่จะปรากฏในบันทึกข้อขัดข้อง (ไม่ทราบว่ามีคำถามเกี่ยวกับเวทมนตร์ที่นี่พลาดปีโพสต์)
Matthew Frederick

3
หากความผิดพลาดเกิดขึ้นเฉพาะเมื่อคุณไม่ได้แนบมาโดยดีบักเกอร์คุณจะต้องมีบันทึก
Ian1971

คุณถูก. นี่เข้าท่า!
Raptor

คุณยังสามารถดูบันทึกการดีบัก (รวมถึงเอาต์พุตของคำสั่ง lldb) ใน "Report navigator" ใน Xcode (cmd-8) สิ่งนี้มีประโยชน์สำหรับการดูเอาต์พุตการดีบักสำหรับการรันก่อนหน้าด้วย หากไม่ได้แนบดีบักเกอร์สิ่งนี้จะไม่ทำงานอย่างชัดเจน
Sebastien Martin

2
บันทึกการแก้ไขข้อบกพร่องไม่เหมือนกับบันทึกข้อขัดข้องแม้ว่าทั้งสองบันทึกจะมีประโยชน์ในการแก้ไขปัญหา
Raptor

คำตอบ:


161

คอนโซลจะแสดงNSLog()ผลลัพธ์จากแอปที่ทำงานในโปรแกรมจำลอง บันทึกข้อขัดข้องจะถูกบันทึกลงในไฟล์

ฉันพบบางส่วนในไดเรกทอรีบ้านของฉันภายใต้

~/Library/Logs/DiagnosticReports/

พวกเขามีนามสกุลไฟล์ .crash

สิ่งที่ฉันยังไม่ทราบคือจะทำอย่างไรให้พวกมันสร้างแม้ว่าดีบั๊กจะจับEXC_BAD_ACCESSสัญญาณได้


อัปเดต

ปัจจุบัน (OSX 10.11.6) บันทึก .crash ใน~/Library/Logs/DiagnosticReports, เมื่อจำลองตัวเองล้มเหลว บันทึกสำหรับแอปที่ขัดข้อง (แต่อุปกรณ์จำลองยังทำงานได้ดี) อยู่ใน:

~ / Library / Logs / CoreSimulator

ต่อความผิดพลาดมีโฟลเดอร์ย่อยที่มีรหัสเฉพาะ จัดเรียงตามวันที่เพื่อให้ข้อขัดข้องล่าสุดของคุณเป็นโฟลเดอร์ย่อยแรก ภายในที่เริ่มต้นด้วยการมองหาที่และstderr.logsystem.log

นอกจากนี้โดยตรงภายใต้CoreSimulatorดูและCoreSimulator.logSimulator.log


มีความคิดว่าทำไมบันทึกเหล่านี้ถึงเขียนลงไฟล์แทนที่จะแสดงในคอนโซล? ขอบคุณสำหรับข้อมูล btw
aqua

11
ไม่มีรายงานข้อขัดข้องของฉันในโปรแกรมจำลอง iPhone หรือ iPad ปรากฏในไดเรกทอรีนี้อาจต้องอัปเดตคำตอบนี้หรือไม่
Justin

3
บางทีอาจจำเป็นต้องมีการอัปเดต แต่การโหวตลดลงไม่ใช่วิธีที่สุภาพในการสนับสนุน
ohhorob

2
ฉันพบรายงานข้อขัดข้องในไดเร็กทอรีที่กล่าวถึง แต่มีเพียงรายงานเดียวและไม่ใช่รายงานล่าสุด (กล่าวคือฉันพยายามทำบางอย่างในแอปและยังคงขัดข้อง) ข้อขัดข้องเหมือนกันทั้งหมดดังนั้นจึงไม่ใช่ปัญหา แต่ฉันสงสัยว่าโดยทั่วไปแล้วจะเป็นเช่นนั้นหรือไม่?
Samik R

10
ทั้ง Justin และ ohhorob ถูกต้อง คุณต้องเปิดแอปบนเครื่องจำลองโดยไม่มี Xcode และสร้างความผิดพลาดอีกครั้งเพื่อดูการเข้าสู่ระบบ~/Library/Logs/DiagnosticReports/
Dave Chambers

21

ฉันค่อนข้างมั่นใจว่าคุณจะเห็นสิ่งนี้ในแอพ OS X Console ที่อยู่ในยูทิลิตี้ ถ้าฉันผิดอย่าลืมลงคะแนนให้ฉันด้วยดังนั้นฉันจึงลบสิ่งนี้ออก


อัพเดท:

โดยเฉพาะ (ณ OSX 10.11.6)

เมื่อแอปขัดข้องในโปรแกรมจำลองโฟลเดอร์ย่อย (ที่มีรหัสเฉพาะ) จะถูกเพิ่มใน:

~ / Library / Logs / CoreSimulator

ภายในที่เริ่มต้นด้วยการตรวจสอบและstderr.logsystem.log

เมื่อตัวจำลองเกิดปัญหาขึ้นโฟลเดอร์ย่อยจะถูกเพิ่มใน:

~ / Library / Logs / DiagnosticReports

อย่าสับสนกับเส้นทางนี้

/ ห้องสมุด / บันทึก

(ขาด~ตั้งแต่เริ่มต้น) ซึ่งมีรายงานที่แตกต่างกันเกี่ยวกับ mac ของคุณ


ใช่. ข้อมูลเพิ่มเติมที่นี่developer.apple.com/iphone/library/documentation/Xcode/…
Brandon Bodnar

ดูเหมือนว่าจะใช้กับอุปกรณ์ iPhone เท่านั้นแทนที่จะใช้โปรแกรมจำลอง แก้ไขฉันถ้าฉันผิด
Raptor

7
คอนโซลสามารถเปิดได้จากเครื่องจำลองโดยการกด Cmd- / หรือใช้ตัวเลือกเมนู Debug / Open System Log ...
lambmj

5

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉันในกรณีพิเศษ ... แอปของฉันขัดข้องกับ SIGKILL เมื่อถูกยุติ ฉันจะเห็นข้อยกเว้นใน main.m สองสามวินาทีจากนั้นแอปจะยุติการทำงาน - ดังนั้นจึงไม่มีโอกาสได้รับการติดตามย้อนกลับ

ฉันค้นหาข้อมูลมากมายเกี่ยวกับ“ เครื่องจำลองเก็บบันทึกข้อขัดข้องไว้ที่ไหน” และไม่เคยหาคำตอบได้เลย อย่างไรก็ตามเคล็ดลับต่อไปนี้มีประโยชน์มากและฉันสามารถคว้าบันทึกความผิดพลาดได้ทันที:

โดยทั่วไปให้เปิด /Applications/Utilities/CrashReporterPrefs.app และเปลี่ยนการตั้งค่าเป็น“ Developer” สิ่งนี้จะทำให้ CrashReporter แสดงป๊อปอัปพร้อมกับบันทึกข้อขัดข้องหลังจากที่แอปของคุณขัดข้อง

ฉันพบสิ่งนี้ในส่วน“ การดู iOS Simulator Console และ Crash Logs” ในเอกสารนี้จาก Apple: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application html


อย่างไรก็ตามปัญหาดั้งเดิมของ SIGKILL ที่ฉันกำลังค้นคว้ากลับกลายเป็นไม่ใช่ปัญหา: stackoverflow.com/questions/7901262/…
dana_a

ฉันควรชี้ให้เห็นว่าไม่มีแอป CrashReporterPrefs ในแอปพลิเคชัน / ยูทิลิตี้อย่างไรก็ตามฉันค้นหาและสามารถค้นหาแอปได้จากที่อื่น
Justin

@ จัสตินเจอที่ไหนคะ?
Ohad Schneider

1
โปรดทราบว่าเครื่องมือที่อ้างถึงข้างต้นสามารถดาวน์โหลดได้จาก Xcode ในชุดที่เรียกว่า "เครื่องมือเพิ่มเติมสำหรับ Xcode" developer.apple.com/download/more/…
markshiz

2

บันทึกข้อขัดข้องจะปรากฏใน ~ / Library / Logs / CrashReporter

  • หากโปรแกรมจำลอง iPhone ขัดข้อง (ไม่ใช่แอป iPhone ที่ทำงานภายในโปรแกรมจำลอง) จะมีรายการสำหรับ iPhoneSimulator
  • หากแอป iPhone ภายในเครื่องจำลองขัดข้องบันทึกข้อขัดข้องจะปรากฏพร้อมชื่อที่แสดงของแอป

เมื่อ Xcode ได้รับบันทึกข้อขัดข้องจากอุปกรณ์ที่เชื่อมต่อจะจัดเก็บไว้ในโฟลเดอร์ย่อยของ ~ / Library / Logs / CrashReporter / MobileDevice


นี่เป็นเวลากว่าหนึ่งปีแล้ว แต่ฉันเห็น "แอปภายในโปรแกรมจำลอง" ขัดข้องที่ ~ / Library / Logs / DiagnosticReports ... และดูเหมือนว่า: MobileSafari_2013-03-21-155844_My-MacBook-Pro.crash
Rob

1

นี่น่าเชื่อถือกว่ามาก เพียงไม่กี่ขั้นตอนฉันก็สามารถค้นหาหมายเลขบรรทัดต้นทางและชื่อวิธีการ:

  1. cd ไปยัง dir ที่มีไฟล์. app & .dSYM
  2. เรียกใช้ /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyApp
  3. ตั้งค่าการพิมพ์ asm-demangle เป็นเปิด
  4. ตั้งค่าการพิมพ์สัญลักษณ์ - ชื่อไฟล์
  5. p / a 0 × 00015c64 -> ที่อยู่ได้มาจากการเปิดบันทึกข้อขัดข้องในแอป "คอนโซล" หรือเพียงแค่ดับเบิลคลิกที่ไฟล์. crash

3
ฉันไม่ค่อยเข้าใจว่าทำไมคุณถึงต้องการบันทึกข้อขัดข้อง เมื่อแอปในโปรแกรมจำลองขัดข้อง แต่ก่อนที่คุณจะหยุดการดีบักให้พิมพ์ "bt" สำหรับ "backtrace" ที่พร้อมท์ gdb คุณจะได้รับสิ่งที่จะปรากฏในบันทึกข้อขัดข้อง
Matthew Frederick

วิธีนี้ใช้ได้ผลดีกับบันทึกข้อขัดข้องจากโทรศัพท์ไคลเอนต์
Gamma-Point

0

สำหรับฉันมันเป็นนิพจน์ที่ฉันได้เพิ่มลงในหน้าต่างนาฬิกาดีบักเกอร์ เมื่อเบรกพอยต์ได้รับผลกระทบการแสดงออกที่ไม่ดีทำให้ XCode เบี่ยงเบนไป


0

คุณอาจต้องการดูคำตอบที่เกี่ยวข้องนี้: https://stackoverflow.com/a/14984297/679240

คำตอบข้างต้นไม่สามารถใช้ได้กับระบบปฏิบัติการเวอร์ชัน "Big Sur" วิธีเดียวที่จะค้นหาบันทึกคือผ่านแอป "คอนโซล" (แอปพลิเคชัน / ยูทิลิตี้ / คอนโซล)

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