Agenda Xcode 5 memiliki tampilan yang akan mencantumkan semua log kerusakan. dan kita bisa seret drop log kerusakan di sini. Tetapi sejak Xcode 6, saya tahu mereka telah memindahkan perangkat dari tidak terorganisir dan memiliki jendela baru untuk hal yang sama. Tapi saya tidak menemukan tempat di mana saya melihat log crash yang saya seret-jatuhkan di Xcode 5 setelah naik ke Xcode 6. Ada yang tahu jawabannya?
190
Jawaban:
Oke, saya sadar Anda bisa melakukan ini:
Xcode > Window > Devices
, pilih iPhone / iPad / etc / yang terhubung kiri atas.Anda mungkin memiliki banyak log di sana, dan untuk membuatnya lebih mudah menemukan log yang Anda impor nanti, Anda bisa melanjutkan dan menghapus semua log pada saat ini ... kecuali jika itu berarti uang bagi Anda. Atau kecuali Anda tahu kapan tepatnya crash itu terjadi - itu harus tetap ditulis dalam file ... Saya malas jadi saya hanya menghapus semua log lama (ini sebenarnya butuh waktu cukup lama).
sumber
.crash
.Menulis jawaban ini sebanyak untuk masyarakat dan untuk saya sendiri.
Jika ada masalah yang melambangkan laporan kerusakan, orang dapat mengatasinya sebagai berikut:
Buat folder terpisah, salin
Foo.app
danFoo.app.dSYM
dari yang sesuai.xcarchive
ke dalam folder. Juga salin.crash
laporan ke folder.Buka laporan kerusakan di TextEdit atau di tempat lain, buka
Binary Images:
bagian, dan salin alamat pertama di sana (mis0xd7000
.).cd
ke dalam folder. Sekarang Anda dapat menjalankan perintah berikut:xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb
Ini akan melambangkan simbol di alamat
0x0033f9bb
. Pastikan untuk memilih nilai yang benar untuk-arch
opsi (dapat diperoleh dari baris pertama diBinary Images:
bagian ini, atau menemukan dariHardware Model:
dalam laporan kerusakan dan lengkungan yang didukung aplikasi).Anda juga dapat menyalin alamat yang diperlukan (mis. Tumpukan panggilan thread) dari laporan kerusakan langsung ke file teks (dalam TextEdit, tahan Opsi dan pilih blok teks yang diperlukan, atau salin dan potong), untuk mendapatkan sesuatu seperti ini:
Sekarang Anda dapat menyimpan ini ke file teks, misalnya
addr.txt
, dan jalankan perintah berikut:Ini akan memberikan simbolisasi yang bagus untuk semua alamat sekaligus.
PS
Sebelum melakukan hal di atas, ada baiknya memeriksa bahwa semuanya sudah diatur dengan benar (karena
atos
dengan senang hati akan melaporkan sesuatu untuk setiap alamat yang disediakan).Untuk melakukan pengecekan, buka laporan kerusakan, dan pergi ke akhir tumpukan panggilan untuk
Thread 0
. Baris pertama dari ujung untuk mencantumkan aplikasi Anda (biasanya yang kedua), misalnya:harus menjadi
main()
panggilan. Melambangkan alamat (0x0033f9bb
dalam hal ini) seperti dijelaskan di atas harus mengkonfirmasi bahwa ini memangmain()
dan bukan beberapa metode atau fungsi acak.Jika alamatnya bukan dari
main()
, periksa alamat muat (-l
opsi) dan lengkungan (-arch
opsi) Anda.PPS
Jika hal di atas tidak berfungsi karena bitcode , unduh dSYM untuk build Anda dari iTunes Connect, ekstrak biner yang dapat dieksekusi dari dSYM (Finder> Show Package Contents), salin ke dalam direktori, dan gunakan (yaitu
Foo
) sebagai argumen keatos
, bukannyaFoo.app/Foo
.sumber
xcrun dwarfdump --uuid <path to executable>
./symbolicate.sh mycrash.crash MyApp.app arch64 output.crash
Hanya itu yang akan melambangkan laporan kerusakan lengkap dan memberi Anda versi simbolisnya. gist.github.com/nathan-fiscaletti/…Anda dapat merujuk ini juga, saya telah menulis prosedur langkah demi langkah Manual Re-Symbolication Crash.
Crash Re-Symbolication
LANGKAH 1
Pindahkan semua file di atas (MyApp.app, MyApp-dSYM.dSYM dan MyApp-Crash-log.crash) ke dalam Folder dengan nama yang nyaman di mana pun Anda dapat menggunakan Terminal dengan mudah.
Bagi saya, Desktop adalah tempat yang paling mudah dijangkau;) Jadi, saya telah memindahkan ketiga file ini ke folder MyApp di Desktop.
LANGKAH 2
Sekarang giliran Finder, Buka jalur dari mengikuti mana yang berlaku untuk versi XCODE Anda.
Gunakan perintah ini untuk menemukan
symbolicatecrash
file skrip,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
Turunkan Xcode 6
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Atau
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
LANGKAH 3
Tambahkan direktori file script symbolicatecrash yang ditemukan ke
$PATH
variabel env seperti ini:sudo vim /etc/paths.d/Xcode-symbolicatecrash
dan tempel direktori file script dan simpan file tersebut. Saat membuka terminal baru, Anda dapat memanggilsymbolicatecrash
folder mana saja karena perintah berada di/usr/bin
.Atau
Salin file symbolicatecrash dari lokasi ini, dan rekatkan ke Desktop / MyApp (Tunggu ... Jangan membabi buta mengikuti saya, saya menempelkan file sybolicatecrash di folder MyApp, yang Anda buat pada langkah satu di lokasi favorit Anda, memiliki tiga file. )
LANGKAH 4
Buka Terminal, dan CD ke Folder MyApp.
- Tekan Enter
- Tekan Enter
Itu dia !! Log yang dilambangkan ada di terminal Anda ... sekarang tunggu apa lagi? Sekarang cukup, Cari tahu Kesalahan dan mengatasinya;)
Selamat Coding !!!
sumber
xcode-select --print-path
Bagi saya file .crash sudah cukup. Tanpa file .dSYM dan file .app.
Saya menjalankan kedua perintah ini di mac tempat saya membuat arsip dan itu berhasil:
sumber
Ada cara yang lebih mudah menggunakan Xcode (tanpa menggunakan alat baris perintah dan mencari alamat satu per satu)
Ambil file .xcarchive. Jika Anda memiliki satu dari sebelum Anda dapat menggunakannya. Jika Anda belum memilikinya, buat satu dengan menjalankan Produk> Arsip dari Xcode.
Klik kanan pada file .xcarchive dan pilih 'Tampilkan Isi Paket'
Salin file dsym (versi aplikasi yang macet) ke folder dSYMs
Salin file .app (versi aplikasi yang macet) ke folder Products> Applications
Edit Info.plist dan edit CFBundleShortVersionString dan CFBundleVersion di bawah kamus ApplicationProperties. Ini akan membantu Anda mengidentifikasi arsip nanti
Klik dua kali file .xcarchive untuk mengimpornya ke Xcode. Itu harus membuka Organizer.
Kembali ke log kerusakan (di jendela Perangkat dalam Xcode)
Seret file .crash Anda ke sana (jika belum ada)
Seluruh log kerusakan sekarang harus disimbolkan. Jika tidak, maka klik kanan dan pilih 'Simbol ulang crash log'
sumber
Ikuti langkah-langkah ini di Xcode 10 untuk melambangkan log kerusakan dari aplikasi build di mesin yang sama:
sumber
Jika Anda memiliki .dSYM dan file .crash di sub-folder yang sama, ini adalah langkah-langkah yang dapat Anda ambil:
$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc -[AtomicElementViewController myTransitionDidStop:finished:context:]
Sumber resmi: https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS
sumber
Xcode 11.2.1, Desember 2019
**
**
Kita akan dapat melihat crash log yang disimbolkan di sana
Silakan lihat tautan untuk perincian lebih lanjut tentang Symbolicating Crash logs
sumber
Pastikan nama aplikasi Xcode Anda tidak mengandung spasi. Inilah alasan mengapa itu tidak berhasil bagi saya. Jadi
/Applications/Xcode.app
bekerja, sementara/Applications/Xcode 6.1.1.app
tidak berhasil.sumber
Dari dokumen Apple:
Melambangkan Laporan Kecelakaan Dengan Xcode Xcode akan secara otomatis berupaya menyimbolkan semua laporan kerusakan yang ditemui. Yang perlu Anda lakukan untuk simbolikasi adalah menambahkan laporan kerusakan ke Xcode Organizer.
Xcode akan secara otomatis menyimbolkan laporan kerusakan dan menampilkan hasilnya. Untuk menyimbolkan laporan kerusakan, Xcode harus dapat menemukan yang berikut:
File biner dan dSYM aplikasi yang macet.
Binari dan file dSYM untuk semua kerangka kerja kustom yang ditautkan oleh aplikasi. Untuk kerangka kerja yang dibangun dari sumber dengan aplikasi, file dSYM mereka disalin ke arsip di samping file dSYM aplikasi. Untuk kerangka kerja yang dibangun oleh pihak ketiga, Anda perlu meminta file dSYM dari pembuatnya.
Simbol untuk OS yang menjalankan aplikasi saat crash. Simbol-simbol ini mengandung informasi debug untuk kerangka kerja yang termasuk dalam rilis OS tertentu (misalnya, iOS 9.3.3). Simbol OS spesifik untuk arsitektur - rilis iOS untuk perangkat 64-bit tidak akan menyertakan simbol armv7. Xcode akan secara otomatis menyalin simbol OS dari setiap perangkat yang Anda sambungkan ke Mac Anda.
Jika salah satu dari ini tidak ada, Xcode mungkin tidak dapat melambangkan laporan kerusakan, atau mungkin hanya melambangkan sebagian laporan kerusakan.
sumber
Proses termudah untuk melambangkan log kerusakan:
Tunggu 5detik. Bang! panggilan aplikasi dalam tumpukan jejak akan disimbolkan! Anda mungkin masih melihat banyak simbol! itu adalah perpustakaan internal dan panggilan kerangka kerja.
Ini yang termudah, dicoba dan diuji!
sumber
**
**
Kita akan dapat melihat crash log yang disimbolkan di sana
Silakan lihat tautan untuk perincian lebih lanjut tentang Symbolicating Crash logs
sumber