Nasıl Yaparım ?

iPhone Crash Log Nedir ve Nasıl Okunur?

iPhone crash log : iPhone cihazlarda oluşan crash log, uygulamaların hangi nedenle çöktüğünü anlamak için kullanılan son derece kritik tanılama kayıtlarıdır. Özellikle geliştiriciler, teknik editörler ve sorun analizcileri tarafından detaylı şekilde incelenir. Bu yazıda iOS crash loglarının mimarisi, içerdiği teknik alanlar, nasıl çözümleneceği ve gerçek crash log parça örnekleriyle birlikte tam kapsamlı bir inceleme bulacaksınız.

İsterseniz bu konu hakkında Apple Türk Forumların da yorum yazabilirsiniz.

iPhone Crash Logları Nerede Bulunur

iOS tüm çökmeleri arka planda otomatik olarak kaydeder. Crash logları şu adım ile bulunabilir:

  • Ayarlar
  • Gizlilik ve Güvenlik
  • Analiz ve İyileştirmeler
  • Analiz Verileri

Burada .ips uzantılı dosyalar crash log kayıtlarıdır.

iPhone Crash Log Nedir

Crash Logların Temel Yapısı

Bir iPhone crash logu genellikle şu alanlardan oluşur:

  • Incident Identifier
  • CrashReporter Key
  • Hardware Model
  • OS Version
  • Exception Type
  • Exception Subtype
  • Termination Reason
  • Thread Backtrace

Örnek iOS Crash Log Parçası

Incident Identifier: 8F2C3E1D-86FE-44B8-9F5B-AB8C3B9A02D4
CrashReporter Key:   a9b4f920e4aa12b4432f0e82f9e2c10bf98d23df
Hardware Model:      iPhone14,7
OS Version:          iOS 17.2 (21C52)
Process:             MyApp [231]
Identifier:          com.example.myapp

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
Termination Reason: SIGNAL 11 Segmentation fault

Bu log ne anlatıyor

Buradaki hata EXC_BAD_ACCESS türündedir. Bu genellikle:

  • Boş veya yok edilmiş objeye erişim
  • NULL pointer kullanımı
  • Bellek bozulması
  • Objeye yanlış mesaj gönderilmesi

Backtrace Yorumlama

Crash logların en kritik bölümü thread backtrace kısmıdır. Uygulamanın hangi satırda çöktüğünü gösterir.

Thread 6 Crashed:
0   libobjc.A.dylib               0x1a3f90d98 objc_msgSend + 24
1   MyApp                         0x102b34870 0x102b00000 + 216944
2   MyApp                         0x102b34c10 0x102b00000 + 218768
3   MyApp                         0x102b1d0f0 0x102b00000 + 118256
4   libsystem_pthread.dylib       0x1f55b1260 _pthread_start + 148
5   libsystem_pthread.dylib       0x1f55acdc8 thread_start + 8

Teknik Yorumlama

İlk satırdaki objc_msgSend çağrısı genellikle uygulamanın serbest bırakılmış veya geçersiz bir objeye mesaj göndermeye çalıştığını gösterir. Bu hatalar genellikle:

  • Asenkron çalışan bir thread
  • Delegate veya callback fonksiyonu
  • Zamanlaması yanlış yapılmış UI güncellemesi

içerisinde ortaya çıkar.

Symbolication Nedir

Crash logdaki adresler doğrudan anlamlı değildir. Bu adreslerin gerçek fonksiyon adlarına çevrilmesine symbolication denir.

Gerekli Dosyalar

  • dSYM dosyası
  • Aynı build numarasına sahip uygulama
  • Xcode veya symbolicatecrash aracı

Örnek Symbolication Sonucu

Thread 6 Crashed:
0   libobjc.A.dylib          objc_msgSend
1   MyApp                    -[HomeViewController updateData:]
2   MyApp                    -[HomeViewController reloadUI]
3   MyApp                    -[HomeViewController viewDidAppear:]

Bu çıktıda fonksiyonların çözümlenmiş hali görülüyor. Hatanın updateData: fonksiyonu içinde olduğu çok net ortaya çıkmıştır.

Jetsam Bellek Hataları

iOS uygulamaları bazen çökmez, sistem tarafından zorla kapatılır. Buna Jetsam denir.

Jetsam Örnek Log

jetsam_event: "memory-pressure"
pages: 182934
reason: per-process-limit

Bu durum aşırı RAM kullanımı anlamına gelir.

iPhone Crash Log Analizi İçin Adım Adım Rehber

  1. Crash log dosyasını .ips olarak dışa aktar
  2. İlk olarak Exception Type alanını incele
  3. Termination Reason değerine bak
  4. Hangi threadin çöktüğünü bul
  5. Backtrace içindeki ilk uygulama fonksiyonunu belirle
  6. Sembolik adres çözümlemesi yap

Geliştiriciler İçin İpuçları

  • Memory leak tespit etmek için Instruments kullan
  • Thread race condition kontrolü yap
  • UI güncellemelerinin sadece ana threadde olduğundan emin ol
  • Asenkron işlemlerde state management kullan

Kaynaklar

    Bir yanıt yazın

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    Başa dön tuşu

    Reklam Engelleyici Algılandı

    Lütfen sitemizde reklamlara izin verin Değerli okurumuz, Farkında olarak veya olmayarak Adblocker (Reklam Engelleyici) kullanarak sitemizi ziyaret etmektesiniz. Apple Türk olarak size en hızlı, en doğru bilgi ve haberleri sunmak için çaba gösteriyoruz. Bizim de bu kapsamda maliyetlerimizi karşılayabildiğimiz tek gelir kalemimiz, internet reklamları. Elimizden geldiğince bu reklamların sizi rahatsız etmemesi için azami özen göstermeye çalışıyoruz. Bu kapsamda AdBlock (Reklam Engelleme) aracınızda www.appleturk.com alan adını beyaz listeye almanızı, veya bu alan adında engelleyiciyi kapatmanızı ve tüm internet sektörünün sağlıklı gelişimi için Adblock aracınızı kaldırmanızı rica ediyoruz.