Bir Günlük Uygulaması Çökme Raporu Neler İçerebilir?
Bir günlük uygulaması çökme raporu; çökme yığın izi (stack trace), cihaz ve uygulama sürümleri, zaman damgaları ve yakın zamandaki tanılama olayları gibi teknik ayrıntıları içerebilir. İşletim sistemine, raporlama servisine ve uygulama yapılandırmasına bağlı olarak, uygulamaya girilen veya uygulamada görüntülenen içeriği açığa çıkaran günlükleri (logs), ekleri veya oturum tekrarı (session replay) verilerini de içerebilir. Bir rapor her durumda otomatik olarak günlük yazılarını içermez, ancak hiçbir zaman içermeyeceğini varsaymak da güvenli değildir. Paylaşmadan önce ilgili raporu ve uygulamanın nasıl yapılandırıldığını kontrol edin.
Standart bir çökme raporu ne gösterir?
Bir yığın izi (stack trace), çökmeyle ilişkili fonksiyon çağrılarını listeler. Geliştiricilerin ilgili kod yolunu bulmasına yardımcı olur, ancak genellikle tek başına tüm koşulları açıklamaz veya kullanıcının o sırada ne yaptığını kanıtlamaz. Raporlar ayrıca uygulama ve işletim sistemi sürümlerini, cihaz modelini, çökme zamanını ve diğer ortam ayrıntılarını da belirtebilir. Apple, çökme raporlarını bir çökme anındaki uygulama durumunun kayıtları olarak tanımlar ve işletim sistemi raporunun tamamının analiz edilmesini önerir; yönergeleri cihaz, uygulama ve işletim sistemi bilgileri gibi alanları tanımlar. Bkz. Apple'ın [çökme raporu analizi kılavuzu](https://developer.apple.com/documentation/xcode/analyzing-a-crash-report).
Rapor biçimi kaynağına bağlıdır. Xcode aracılığıyla toplanan Apple çökme raporları ile bir Android hata raporu farklı yapıtlardır. Android'in resmi kılavuzu, bir hata raporunun cihaz günlüklerini, yığın izlerini, sistem servislerinden gelen tanılama çıktılarını, hata günlüklerini ve Android'in `Log` sınıfını kullanan uygulamalardan gelen sistem mesajlarını içerebileceğini belirtir. Bu, yalnızca çökmeye odaklı bir kayıttan daha kapsamlıdır. Münferit bir raporun içeriği yine de nelerin toplanıp dahil edildiğine bağlıdır. Bkz. [Android'in hata raporlarını yakalama ve okuma kılavuzu](https://developer.android.com/studio/debug/bug-report).
Rapor günlük metnini içerebilir mi?
Bazı yapılandırmalarda içerebilir, ancak yalnızca bir çökme raporunun var olması, günlük giriş metnini içerdiğini kesin olarak göstermez. Temel soru, uygulamanın çökmenin yanında neleri kaydettiği ve rapor biçiminin neleri yakaladığıdır.
Örneğin, uygulama geliştiricileri tanılama günlüğü iletileri veya özel olaylar ekleyebilir. Bu iletiler bir günlük girişini, bir başlığı, bir arama terimini veya bir düzenleyiciden kopyalanan metni içeriyorsa, bu bilgiler olayla birlikte aktarılabilir. Sentry, içerik haritalarını (breadcrumbs) bir sorundan önceki olaylar dizisi olarak tanımlar; her biri bir iletiye ve rastgele yapılandırılmış verilere sahip olabilir. İçerik haritaları, etkinleştirilmiş entegrasyonlar aracılığıyla otomatik olarak toplanabilir veya bir uygulama tarafından eklenebilir. Bkz. [Sentry'nin içerik haritası (breadcrumb) belgeleri](https://docs.sentry.io/product/issues/issue-details/breadcrumbs/). Android hata raporları ayrıca uygulamalar tarafından yazılan mesajları içerebilecek sistem mesaj günlüklerini de kapsar. Bu durumların hiçbiri her uygulamanın özel metinleri günlüğe kaydettiği anlamına gelmez: bu, uygulamanın uygulamasına ve yapılandırmasına bağlıdır.
Günlükler, içerik haritaları, ekler ve oturum tekrarı nedir?
Bu terimler farklı tanılama verisi türlerini ifade eder. Günlükler (logs), uygulama veya sistem tarafından kaydedilen mesajlardır. İçerik haritaları (breadcrumbs), bir hataya yol açan seçilmiş bir olaylar dizisidir; zaman damgalarını, kategorileri, iletileri ve anahtar-değer verilerini içerebilir. Her ikisi de, uygulamanın ne kaydettiğine bağlı olarak, bir yığın izinden daha fazla bağlam ortaya koyabilir.
Ekler; günlük dosyası, ekran görüntüsü veya çökme dökümü (crash dump) gibi bir olayla birlikte gönderilen dosyalardır. Sentry, yerel minidump'ların ortam değişkenleri, yerel yollar veya giriş alanlarının bellekteki temsilleri gibi hassas materyaller içerebileceğini belirtir. Belgeleri, minidump'ların olay oluşturmak için kullanıldığını ve varsayılan olarak atıldığını, ancak bu ayar etkinleştirilirse ek olarak saklanabileceğini belirtir; ayrıca eklerin Sentry veri temizleme (data scrubbing) kapsamında olmadığını ifade eder. Bkz. [Sentry'nin çökme verileri hakkındaki belgeleri](https://docs.sentry.io/platforms/native/guides/crashpad/data-management/data-collected/) ve [ekler belgeleri](https://docs.sentry.io/platforms/native/guides/crashpad/enriching-events/attachments/).
Oturum tekrarı (session replay), ayrı ve isteğe bağlı bir özelliktir; her çökme raporunun standart bir bileşeni değildir. Sentry'nin JavaScript tekrar belgeleri, DOM durumu ve etkileşimleri de dahil olmak üzere tarayıcı etkinliğinin video benzeri bir yeniden yapılandırmasını tanımlar. SDK'nın yapılandırma seçenekleri sunarken varsayılan olarak DOM metnini, görüntüleri ve kullanıcı girişini maskelediğini belirtir. Maskeleme ayarları ve desteklenen platformlar önem taşır: Gerçek sağlayıcı kurulumunu ve gizlilik yapılandırmasını kontrol etmeden günlük içeriğinin görünür veya koruma altında olduğu sonucunu çıkarmayın. Bkz. [Sentry'nin JavaScript Session Replay kılavuzu](https://docs.sentry.io/platforms/javascript/session-replay/).
Bir raporu paylaşmadan önce neleri incelemelisiniz?
Gerçek dosya veya rapor önizlemesi üzerinde bu kontrol listesini kullanın ve raporun içeriği net olmadığında uygulamanın veya sağlayıcının gizlilik belgelerini kontrol edin:
Bu kontrol listesi, bir raporu göndermeden önce inceleyen günlük kullanıcısı için pratik editoryal rehberlik niteliğindedir. Geliştirici talimatlarından ayrıdır: Geliştiriciler kendi günlük kaydı, tekrar ve ek ayarlarını kontrol eder ve bu özelliklerin neleri topladığını belgelemeli ve tanılama alanlarının kullanıcı tarafından girilen içerikleri barındırıp barındıramayacağını incelemelidir.
Raporlar neden uygulamalar ve cihazlar arasında farklılık gösterebilir?
İşletim sistemleri farklı rapor biçimleri ve toplama yolları üretir; geliştiriciler ayrıca özel yapılandırmaya sahip üçüncü taraf bir SDK da kullanabilir. Apple, App Store ve TestFlight çökme raporlarının Xcode aracılığıyla erişilebilir olduğunu, diğer tanılama günlüklerinin ise bir cihazdan aktarılması gerekebileceğini belirtir. Android, tam hata raporlarını Google Play veya Firebase gibi servisler aracılığıyla sağlanan çökme raporlarından ayırır. Sağlayıcı ayarları, hangi olayların, içerik haritalarının, eklerin veya tekrar verilerinin yakalanıp saklanacağını daha da belirleyebilir. Her servisin aynı alanları gönderdiğini varsaymak yerine, belirli bir durum için kılavuz olarak uygulamanın gizlilik bildirimini ve gerçek raporu esas alın.
