İPhone Simulator tarafından oluşturulan kilitlenme günlükleri?


98

İPhone Simulator tarafından oluşturulan herhangi bir kilitlenme günlükleri var mı?

Simülatör çok sık çöküyor ancak Konsolda herhangi bir iz bırakmıyor ... çökme günlüğü faydalı olacaktır.


2
Çökme kayıtlarına neden ihtiyacın olduğunu tam olarak anlamıyorum. Simülatördeki uygulama çöktüğünde, ancak siz hata ayıklamayı durdurmadan önce, gdb isteminde "geri izleme" için "bt" yazın - kilitlenme günlüğünde tam olarak ne görüneceğini alacaksınız. (burada soru büyücüsü olduğunun farkında değildim, yıl sonu kaçırdı)
Matthew Frederick

3
Kilitlenme yalnızca hata ayıklayıcı tarafından bağlanmadığınızda meydana geldiyse, günlüklere ihtiyacınız olacaktır.
Ian1971

haklısın. bu mantıklı!
Raptor

Hata ayıklama günlüğünü (lldb komutlarının çıktısı dahil) Xcode'daki (cmd-8) "Rapor gezgininde" de görebilirsiniz. Bu, önceki çalıştırmalar için de hata ayıklama çıktısını görmek için yararlıdır. Hata ayıklayıcı eklenmemişse, bu açıkça çalışmayacaktır.
Sebastien Martin

2
Hata ayıklama günlüğü, Kilitlenme günlüğü ile aynı değildir, ancak her iki günlük de sorunu gidermek için yararlıdır.
Raptor

Yanıtlar:


161

Konsol NSLog(), simülatörde çalışan bir uygulamadan çıktıyı gösterecektir . Kilitlenme günlükleri dosyaya kaydedilir.

Bazılarını ana dizinimde altında buldum

~/Library/Logs/DiagnosticReports/

Dosya uzantısına sahipler .crash

Henüz çözemediğim bir şey, hata ayıklayıcı EXC_BAD_ACCESSsinyali kapsa bile onları nasıl üretecekleri .


Güncelleme

Şu anda, (OSX 10.11.6), içinde .crash günlükleri ~/Library/Logs/DiagnosticReportszaman vardır emülatör kendisi çöküyor . Bir uygulamanın kilitlenmesine ilişkin günlükler (ancak öykünücü cihaz hala düzgün çalışıyor):

~ / Library / Logs / CoreSimulator

Kilitlenme başına, benzersiz kimliği olan bir alt klasör vardır. Tarihe göre sıralayın, böylece son çöküşünüz ilk alt klasör olur. O İçinde bakarak başlamak stderr.logve system.log.

Ayrıca doğrudan altında CoreSimulator, bkz. CoreSimulator.logVe Simulator.log.


Bu günlüklerin konsolda görünmek yerine neden dosyaya yazıldığına dair bir fikriniz var mı? Bilgi için teşekkürler, btw.
aqua

11
İPhone veya iPad simülatöründeki kilitlenme raporlarımdan hiçbiri bu dizinde görünmüyor, belki bu cevabın güncellenmesi gerekiyor?
Justin

3
Belki bir güncellemeye ihtiyacı vardır, ancak olumsuz oy, bunu teşvik etmenin pek kibar bir yolu değildir.
ohhorob

2
Çökme raporunu belirtilen dizinde buldum, ancak yalnızca bir rapor vardı ve en güncel olanı değildi (yani, uygulamada birkaç şey denemeye devam ettim ve çökmeye devam ettim). Çökmelerin hepsi aynıydı, bu bir sorun değildi, ama genel olarak durumun bu olup olmadığını merak ediyorum.
Samik R

10
Hem Justin hem de Ohhorob haklı. Uygulamayı Xcode OLMADAN simülatörde başlatmanız ve oturumları görmek için çökmeyi yeniden oluşturmanız gerekir~/Library/Logs/DiagnosticReports/
Dave Chambers

21

Bunu Utilities'de bulunan OS X Console uygulamasında görebileceğinizden oldukça eminim. Yine de yanılıyorsam, bana oy verdiğinizden emin olun, böylece bunu sileyim.


GÜNCELLEME:

Özellikle (OSX 10.11.6 itibariyle),

Bir uygulama öykünücüde çöktüğünde, şuna bir alt klasör (benzersiz bir kimliğe sahip) eklenir:

~ / Library / Logs / CoreSimulator

Bunun içinde inceleyerek başlayın stderr.logve system.log.

Öykünücünün kendisi çöktüğünde, şuna bir alt klasör eklenir:

~ / Library / Logs / DiagnosticReports

Bu yolu karıştırmayın

/ Kitaplık / Günlükler

( ~başlangıçta eksik ), Mac'iniz hakkında farklı raporlar var.



simülatör yerine sadece iPhone cihazları için geçerli gibi görünüyor. Eğer Yanlışsam beni düzelt.
Raptor

7
Konsol simülatörden Cmd- / tuşuna basarak veya Hata Ayıkla / Sistem Günlüğünü Aç ... menü seçeneği kullanılarak açılabilir.
lambmj

5

İşte benim için özel bir durumda çalışan bir şey ... Uygulamam, sonlandırılırken SIGKILL ile kilitleniyordu. Birkaç saniyeliğine main.m'deki istisnayı görürdüm ve sonra uygulama sonlandırmayı bitirirdi - bu nedenle geri izlemeyi alma şansı olmazdı.

"Simülatör çökme günlüklerini nerede saklıyor" konusunda çok araştırma yaptım ve hiçbir zaman bir yanıt bulamadım. Ancak, aşağıdaki numara oldukça kullanışlı oldu ve kilitlenme günlüğünü anında yakalamayı başardım:

Temel olarak /Applications/Utilities/CrashReporterPrefs.app dosyasını açın ve ayarı "Geliştirici" olarak değiştirin. Bu, CrashReporter'ın uygulamanız kilitlendikten sonra kilitlenme günlüğünü içeren bir açılır pencere görüntülemesine neden olur.

Bunu, Apple'dan gelen bu dokümandaki "iOS Simülatör Konsolu ve Kilitlenme Günlüklerini Görüntüleme" bölümünde buldum: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application. html


Bu arada, araştırdığım SIGKILL ile ilgili asıl sorunun sorun olmadığı ortaya çıktı: stackoverflow.com/questions/7901262/…
dana_a

Uygulama / Yardımcı Programlar'da CrashReporterPrefs uygulaması olmadığını belirtmeliyim, ancak onu aradım ve uygulamayı başka bir yerde bulabildim.
Justin

@Justin onu nereden buldun?
Ohad Schneider

1
Yukarıda bahsedilen aracın "Xcode için Ek Araçlar" adlı bir paket halinde
Xcode'dan indirilebileceğini unutmayın

2

Kilitlenme günlükleri ~ / Library / Logs / CrashReporter altında görünecektir.

  • İPhone simülatör programı çökerse (simülatörde çalışan iPhone uygulaması değil), iPhone Simülatörü için bir giriş olacaktır.
  • Simülatördeki iPhone Uygulaması çökerse, kilitlenme günlüğü uygulamanın görünen adıyla birlikte görünecektir.

Xcode bağlı bir cihazdan kilitlenme günlükleri aldığında, bunları ~ / Library / Logs / CrashReporter / MobileDevice alt klasörlerinde saklar.


Bu bir yıldan fazla bir süre sonra, ancak "simülatör içindeki uygulamanın" ~ / Library / Logs / DiagnosticReports ... konumunda çöktüğünü görüyorum ve şöyle görünüyor: MobileSafari_2013-03-21-155844_My-MacBook-Pro.crash
Rob

1

Bu çok daha güvenilirdir. Yalnızca birkaç adımda kaynak satır numarasını ve yöntem adını bulabildim:

  1. .app & .dSYM dosyalarının bulunduğu dizine cd
  2. /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyApp çalıştırın
  3. yazdırma asm-demangle'ı açık ayarla
  4. yazdırma sembol-dosya adını ayarla
  5. p / a 0 × 00015c64 -> adresi "Konsol" uygulamasında kilitlenme günlüğünü açarak veya .crash dosyasını çift tıklayarak aldı.

3
Çökme kayıtlarına neden ihtiyacın olduğunu tam olarak anlamıyorum. Simülatördeki uygulama çöktüğünde, ancak siz hata ayıklamayı durdurmadan önce, gdb isteminde "geri izleme" için "bt" yazın - kilitlenme günlüğünde tam olarak ne görüneceğini alacaksınız.
Matthew Frederick

Bu yöntem, istemci telefonlarından gelen kilitlenme günlükleri için harika çalışıyor.
Gama Noktası

0

Benim için hata ayıklayıcı izleme penceresine eklediğim bir ifadeydi. Bir kesme noktası vurulduğunda, kötü ifade XCode'un segfault yapmasına neden oluyordu.


0

Bu ilgili yanıta da bir göz atmak isteyebilirsiniz: https://stackoverflow.com/a/14984297/679240

Yukarıdaki yanıtlardan hiçbiri "Big Sur" işletim sistemi sürümü üzerinde işe yaramadı. Günlüğü bulmanın tek yolu "Konsol" uygulamasıydı (Uygulama / Yardımcı Programlar / Konsol)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.