Log kerusakan yang dibuat oleh iPhone Simulator?

96

Apakah ada log kerusakan yang dihasilkan oleh iPhone Simulator?

Simulator sering mogok tetapi tidak meninggalkan jejak apa pun di Konsol ... log kerusakan akan berguna.

Raptor
sumber
2
Saya tidak begitu mengerti mengapa Anda membutuhkan log kerusakan. Saat aplikasi di simulator macet tetapi sebelum Anda menghentikan debugging, pada prompt gdb ketik "bt" untuk "lacak balik" - Anda akan mendapatkan apa yang akan muncul di log kerusakan. (tidak menyadari ada pertanyaan necromancy di sini, melewatkan tahun posting)
Matthew Frederick
3
Jika crash hanya terjadi ketika Anda tidak dilampirkan oleh debugger, maka Anda memerlukan log.
Ian1971
kamu benar. ini masuk akal!
Raptor
Anda juga dapat melihat log debug (termasuk keluaran dari perintah lldb) di "Report navigator" di Xcode (cmd-8). Ini berguna untuk melihat keluaran debug untuk proses sebelumnya juga. Jika debugger tidak terpasang, ini tidak akan bekerja dengan jelas.
Sebastien Martin
2
Log debug tidak sama dengan log kerusakan, meskipun kedua log tersebut berguna untuk men-debug masalah.
Raptor

Jawaban:

157

Konsol akan menampilkan NSLog()keluaran dari aplikasi yang berjalan di simulator. Log kerusakan disimpan ke file.

Saya telah menemukan beberapa di direktori home saya di bawah

~/Library/Logs/DiagnosticReports/

Mereka memiliki ekstensi file .crash

Sesuatu yang belum saya temukan adalah bagaimana membuat mereka menghasilkan bahkan jika debugger mengambil EXC_BAD_ACCESSsinyalnya.


Memperbarui

Saat ini, (OSX 10.11.6), .crash yang masuk ~/Library/Logs/DiagnosticReports, adalah saat emulator itu sendiri mengalami error . Log untuk aplikasi yang mengalami error (tetapi perangkat emulator masih berjalan dengan baik), ada di:

~ / Library / Logs / CoreSimulator

Per crash, ada sub-folder dengan id unik. Urutkan berdasarkan tanggal, sehingga kerusakan terakhir Anda adalah sub-folder pertama. Di dalamnya, mulailah dengan melihat stderr.logdan system.log.

Juga langsung di bawah CoreSimulator, lihat CoreSimulator.logdan Simulator.log.

ohhorob
sumber
Tahu mengapa log ini ditulis ke file alih-alih muncul di konsol? Terima kasih atas infonya, btw.
aqua
11
Tidak ada laporan kerusakan saya di simulator iPhone atau iPad yang muncul di direktori ini, mungkin jawaban ini perlu diperbarui?
Justin
3
Mungkin memang perlu pembaruan, tetapi suara tidak setuju bukanlah cara yang sangat sopan untuk mendorongnya.
ohhorob
2
Saya menemukan laporan kerusakan di direktori yang disebutkan, tetapi hanya ada satu laporan dan itu bukan yang terbaru (yaitu, saya terus mencoba beberapa hal di aplikasi dan terus mogok). Semua crash itu sama, jadi itu bukan masalah, tapi saya bertanya-tanya apakah ini masalahnya?
Samik R
10
Baik Justin maupun ohhorob benar. Anda perlu meluncurkan aplikasi pada simulator TANPA Xcode dan mereproduksi kerusakan untuk melihat log masuk~/Library/Logs/DiagnosticReports/
Dave Chambers
20

Saya cukup yakin Anda dapat melihat ini di aplikasi Konsol OS X yang terletak di Utilities. Jika saya salah, pastikan untuk memilih saya jadi saya menghapus ini.


MEMPERBARUI:

Secara khusus (pada OSX 10.11.6),

Saat aplikasi mengalami error pada emulator, subfolder (dengan id unik) ditambahkan ke:

~ / Library / Logs / CoreSimulator

Di dalamnya, mulailah dengan memeriksa stderr.logdan system.log.

Jika emulator itu sendiri mengalami error, subfolder akan ditambahkan ke:

~ / Library / Logs / DiagnosticReports

Jangan bingung dengan jalan ini

/ Library / Logs

(kurang ~di awal), yang memiliki laporan berbeda tentang mac Anda.

bpapa
sumber
Ya. Info lebih lanjut di sini developer.apple.com/iphone/library/documentation/Xcode/…
Brandon Bodnar
Sepertinya itu hanya berlaku untuk perangkat iPhone, bukan simulator. Koreksi saya jika saya salah.
Raptor
7
Konsol dapat dibuka dari simulator dengan menekan Cmd- / atau menggunakan opsi menu Debug / Buka Log Sistem ....
lambmj
5

Ini adalah sesuatu yang berhasil untuk saya dalam kasus khusus ... Aplikasi saya mogok dengan SIGKILL saat dihentikan. Saya akan melihat pengecualian di main.m selama beberapa detik, dan kemudian aplikasi akan selesai dihentikan - dengan demikian, tidak ada kesempatan untuk mendapatkan jejak kembali.

Saya melakukan banyak pencarian di “di mana simulator menyimpan log kerusakannya” dan tidak pernah berhasil menemukan jawaban. Namun, trik berikut ini cukup berguna dan saya bisa mengambil log kerusakan dengan cepat:

Pada dasarnya, buka /Applications/Utilities/CrashReporterPrefs.app dan ubah pengaturan ke "Pengembang". Ini akan menyebabkan CrashReporter menampilkan munculan dengan log kerusakan setelah aplikasi Anda mogok.

Saya menemukan ini di bagian “Melihat Konsol Simulator iOS dan Log Kerusakan” di dokumen ini dari Apple: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application. html

dana_a
sumber
Ngomong-ngomong, masalah asli SIGKILL yang saya teliti ternyata bukan masalah: stackoverflow.com/questions/7901262/…
dana_a
Saya harus menunjukkan bahwa tidak ada aplikasi CrashReporterPrefs di Aplikasi / Utilitas, namun saya mencarinya dan dapat menemukan aplikasi tersebut di tempat lain.
Justin
@Justin di mana Anda menemukannya?
Ohad Schneider
1
Perhatikan bahwa alat yang disebutkan di atas dapat diunduh dari Xcode dalam bundel yang disebut "Alat Tambahan untuk Xcode" developer.apple.com/download/more/…
markshiz
1

Ini jauh lebih dapat diandalkan. Hanya dalam beberapa langkah saya dapat menemukan nomor baris sumber & nama metode:

  1. cd ke direktori yang memiliki file .app & .dSYM
  2. jalankan /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyApp
  3. aktifkan print asm-demangle
  4. setel nama file simbol cetak pada
  5. p / a 0 × 00015c64 -> alamat yang didapat dengan membuka log kerusakan di aplikasi "Konsol" atau cukup mengklik dua kali file .crash.
Titik Gamma
sumber
3
Saya tidak begitu mengerti mengapa Anda membutuhkan log kerusakan. Saat aplikasi di simulator macet tetapi sebelum Anda menghentikan debugging, pada prompt gdb ketik "bt" untuk "lacak balik" - Anda akan mendapatkan apa yang akan muncul di log kerusakan.
Matthew Frederick
Metode ini berfungsi dengan baik untuk log kerusakan dari ponsel klien.
Gamma-Point
1

Log error error akan muncul di ~ / Library / Logs / CrashReporter.

  • Jika program simulator iPhone macet (bukan aplikasi iPhone yang berjalan di dalam simulator), maka akan ada entri untuk iPhoneSimulator.
  • Jika Aplikasi iPhone dalam simulator macet, log kerusakan akan muncul dengan nama tampilan aplikasi.

Ketika Xcode mendapatkan log kerusakan dari perangkat yang terhubung, Xcode menyimpannya di sub-folder ~ / Library / Logs / CrashReporter / MobileDevice

Penjual Walt
sumber
Ini lebih dari setahun kemudian, tetapi saya melihat "aplikasi dalam simulator" macet di ~ / Library / Logs / DiagnosticReports ... dan terlihat seperti: MobileSafari_2013-03-21-155844_My-MacBook-Pro.crash
Rob
0

Bagi saya, itu adalah ekspresi yang telah saya tambahkan ke jendela arloji debugger. Ketika breakpoint terkena, ekspresi buruk menyebabkan Xcode menjadi segfault.

pTymN
sumber