Skip to main content
Bir iOS uygulamasındaki native çökmeleri ve ana iş parçacığı donmalarını yakalamak için bu iş akışını kullanın. Donma yakalama UIKit gerektirir. Yığın çerçevelerinde kaynak konumlarını görmek için eşleşen dSYM’yi yükleyin. Uygulama çöktüğünde yerel bir rapor kaydeder. Daha sonraki bir açılışta uygulamanız, çökme kanıtını LogBrew’e göndermek için yeniden gönderimi (replay) çağırır. LogBrew ham Apple raporunu göndermez.
LogBrew Swift 0.1.6 veya daha yeni bir sürüm kullanın. Hata ayıklama derleme dosyalarını yüklemek için native LogBrew CLI 0.1.24 veya daha yeni bir sürüm kullanın.
Uygulamanın içinde proje kapsamlı alım (ingest) yapılandırması kullanın. Derleme dosyası yüklemeleri ve sorun okumaları için hesap girişi kullanın. Bir proje derleme dosyası anahtarı da derleme makinesinden yükleme yapabilir. Uygulamaya asla hesap erişim tokenı veya derleme dosyası anahtarı koymayın.

Yakalama sınırını planlayın

Uygulamanızın her hata türünü ne zaman yeniden gönderebileceğini kontrol edin. Sürüm değerini derlemeden önce ayarlayın. Bu değer uygulama sürümünü ve derlemeyi tanımlamalıdır. Aynı değeri SDK’da, dSYM yüklemesinde ve sorun filtresinde kullanın. Çökme meta verilerine kullanıcı verisi, istek gövdesi veya başlık eklemeyin.

Çökme ürününü ekleyin

Önce uygulamanız için SDK telemetrisini kurun. Yeniden gönderim bu client ve transport değerlerini kullanır. Herkese açık SDK’yı Swift Package Manager ile ekleyin.
Telemetri göndermek için LogBrew ürününü ekleyin. LogBrewCrash ürününü yalnızca uygulama native çökme veya donma yakalamayı açıkça etkinleştirdiğinde ekleyin. Yakalama entegrasyonu iOS 15 veya daha yeni sürümleri destekler. Native ölümcül hata işleyicileri tüm süreci kapsadığı için uygulamaya ait tek bir yakalama nesnesi tutun.

Tek ve tam bir kimlik yapılandırın

Çalışma zamanı kurulumunda ve derleme dosyası yüklemesinde aynı projeyi, sürümü, ortamı ve hizmeti kullanın. LogBrew bu değerleri türetmez veya değiştirmez.
Kök arayüzü oluşturmadan önce yakalama nesnesini ana iş parçacığında kurun. Önce üst dizinini oluşturun. Depolama dizinini uygulamaya ait ve özel tutun. Yakalama nesnesi Mach istisnalarını, sinyalleri, C++ istisnalarını ve Objective-C istisnalarını kaydeder. Yerel rapor bellek içeriklerini, kuyruk adlarını veya konsol loglarını içermez. Yerel çökme raporu hassas uygulama ve cihaz ayrıntıları içerebilir. Raporu bulut yedeklerinin ve paylaşılan dizinlerin dışında tutun. LogBrew ham rapor yerine çerçeve UUID’lerini, mimarileri ve ofsetleri gönderir. NativeCrashConfiguration isteğe bağlı iki sınıra sahiptir: Aralığın dışındaki bir değer, yapılandırmanın crash_invalid_configuration hatası fırlatmasına neden olur.

Donma yakalamayı etkinleştirin

watchdog değeri nil olduğunda donma yakalama kapalıdır. Etkinleştirmek için install() çağırmadan önce yukarıdaki watchdog bildirimini değiştirin:
Eşik saniye cinsindendir ve 1 ile 30 arasındadır. Donma yakalama artifactIdentity de gerektirir. Bu değer yoksa yapılandırma crash_invalid_configuration fırlatır. Süreç boyunca tek bir crashCapture nesnesi tutun. İkinci bir yakalama nesnesi kurulamaz. Onun install() çağrısı crash_capture_owned fırlatır. Eşiği değiştirmek için yeni değeri sonraki uygulama açılışında kullanın. Düzelen bir donma, crash.handled değeri true olarak yeniden gönderilir. Süreç sonlandırıldığında hâlâ süren bir donma, crash.handled değeri false olarak yeniden gönderilir. İki biçim de sayısal durationMs meta verisini içerir. Ölümcül çökme çerçevelerinin kullandığı derleme dosyası kimliğini korurlar. Watchdog, uygulama etkin değilken veya hata ayıklayıcı altındayken duraklar. Ciddi termal baskı sırasında da yakalamayı bastırır. Kısa bir eşik, ana iş parçacığındaki normal işleri donma olarak bildirebilir. Eşiği yayımladığınız derleme yapılandırmasıyla test edin. Ele alınmış durum düzelmeyi anlatır. Sorunu çözülmüş olarak işaretlemez. Ele alınmış bir donma da arayüzü engellemiştir. Bu yüzden onu da inceleyin.

Açılıştan sonra yeniden gönderin

Yakalama kurulduktan sonra bekleyen raporları SDK istemciniz üzerinden yeniden gönderin.
Yeniden gönderimi uygulamanız çağırmalıdır. Donmanın düzelmesi tek başına olay göndermez. Aynı yöntemi düzelmeden sonra veya sonraki açılışta çağırın. Yeniden gönderim geçerli raporları en eskiden başlayarak işler ve sabit olay kimliklerini korur. Başarısız bir gönderim raporunu bekleyen durumda bırakır. Kabul edilen gönderim raporu kaldırır. Yeniden gönderim okuyamadığı raporları ve maxReplayBytes değerinden büyük raporları atar. Üç sayının hepsini kontrol edin. Bekleyen sayının sıfır olması tek başına gönderimi kanıtlamaz. Başarısız bir isteğin bir sonraki yeniden başlatmadan da sağ çıkması gerekiyorsa yeniden gönderimden önce kalıcı gönderimi etkinleştirin. Olağan ağ veya kimlik doğrulama kurtarması sırasında purge() çağırmayın.

Eşleşen dSYM’yi yükleyin

Uygulamayı hata ayıklama bilgisi etkinken arşivleyin. Kullanıcıların çalıştırdığı derlemenin tam dSYM dosyasını saklayın. Görüntü (image) UUID’lerini inceleyin.
Derleme dosyasını yüklemeden önce yerelde doğrulayın.
Gereken her mimari için --expect-image-uuid seçeneğini tekrarlayın. Bulunan UUID kümesi beklenen kümeden farklıysa komut başarısız olur. Hesap erişimini kontrol edin. Ardından aynı komutu --dry-run olmadan çalıştırın.
Yükleme komutu desteklenen Apple nesnelerini doğrular ve yüklenen her kimliği denetler. API meta verilerine yerel yolları veya dosya adlarını eklemez. JSON status değeri sonucu gösterir: Derleme makinesi, hesap erişimi yerine LOGBREW_TOKEN içindeki bir proje derleme dosyası anahtarıyla yükleme yapabilir. Anahtarı Derleme dosyası anahtarı oluşturun bölümündeki gibi oluşturun. Bu yükleme uploaded bildirir. Her kimliği daha sonra hesap erişimiyle doğrulayın:
status: "found" derleme dosyasını doğrular. status: "missing", LogBrew’de o kimlik için derleme dosyası olmadığı anlamına gelir. Çözümleme kaynak dosya adını değil, görüntü UUID’sini ve derleme dosyasının tam kimliğini eşleştirir. Aynı kaynağın yeniden derlenmesi farklı UUID’lere sahip olabilir. Tüm derleme dizinini değil, tam dSYM paketini yükleyin.

LogBrew’den geri okumayı doğrulayın

Sorun listesini aynı çalışma zamanı kapsamıyla filtreleyin. Bu örnek unresolved sorunları seçer. Çözülmüş veya arşivlenmiş bir sorun görünmez.
Liste yanıtı gruplanmış sorunu tanımlar. LogBrew’de çerçeve çözümlemesi istemek için sorunun ayrıntısını okuyun.
Eşleşen bir derleme dosyası bir symbolication nesnesi ekler. Bu örnek, çözümlenmiş bir çerçevesi olan bir sorundan seçilmiş alanları gösterir. Yanıtın tamamı değildir.

Çökme kanıtını okuyun

Her çerçevenin kendi status değeri vardır. symbolication.status alanı aynı değerleri kullanır: Çözümlenmemiş bir çerçeveyi notlarınızda çözümlenmemiş olarak tutun. Onu boş bir yığın olarak bildirmeyin. LogBrew çerçeveleri sorunu okuduğunuzda çözümler. Daha sonra yüklenen bir dSYM, daha önceki bir olayın çerçevelerini çözümleyebilir. Olayın yakalamadığı çerçeveleri ekleyemez. Bir uygulama çerçevesi kod aramasını daraltır ama nedeni kanıtlamaz. Önceki adımlar (breadcrumbs), istisna zinciri ve iz kanıtı için sorun incelemesini okuyun:
Bu yanıtta source: "symbolicated" içeren bir çerçeve yüklenmiş bir derleme dosyasından gelir. source: "captured" içeren bir çerçeve, uygulamanın gönderdiği konumdur. Yanıt alanları için Bir sorunu inceleyin rehberine bakın. Her okumada proje, sürüm, ortam ve hizmet kapsamını eksiksiz koruyun. Başarısız bir aramayı projeler arasında genişletmeyin.

Canlı ortam kurulumunu doğrulayın

Dağıtılan derlemede onaylı bir test hatası kullanın. Tetikleyici olarak asla bir müşteri aksiyonu kullanmayın. Her maddeyi sırayla kontrol edin ve ilk başarısızlıkta durun:
  1. Çalışma zamanı kimliği yüklenen derleme dosyasının kimliğiyle eşleşir.
  2. Daha sonraki bir açılış, sıfır atılmış ve sıfır bekleyen raporla onaylanmış tek bir olayı yeniden gönderir.
  3. Kapsamlı sorun listesi test sorununu beklenen ele alınma durumuyla döndürür.
  4. Beklenen uygulama çerçevesi çözümlenir.
  5. Daha sonraki temiz bir açılış yeni bir oluşum eklemez.

Güvenle kurtarın

Genel sorun incelemesi için API ile sorunu inceleyin rehberini kullanın.