"Ubuntu-bug" işini yaptıktan sonra ne olur?


14

Bir süre öncesine kadar koştunuz apport-bugveya ubuntu-bugbir hata bildirmeye başladınız. Sistem daha sonra hesabınızla birlikte fırlatma rampasını açar, toplanan bilgileri yükler ve hata raporuna daha fazla bilgi eklemenizi sağlar.

Şimdi çalıştırdığımda gksudo ubuntu-bug(örneğin crashargüman olarak bir -file ile ) ortak hata diyalogu belirir

resim açıklamasını buraya girin

ve hepsi bu.

Rapor nereye gönderiliyor? Kesinlikle fırlatma aracını bir hata raporu olarak kullanmamak (somut durumda insanlar bu hata hakkında bir rapor hazırlayabilmelerine rağmen).

Peki: bu rapor nereye gönderiliyor (ve belki de) sistemimden hala bir hata raporunu nasıl dosyalayabilirim (ilgili dosyaların yüklenmesini çok daha kolay hale getirir)

"Sistem" bunun zaten var olan bir hatanın kopyası olduğuna karar verebilir mi?

Yanıtlar:


7

Teknik olarak, ubuntu-bugkilitlenme raporunu yerel olarak günlüğe kaydeder. Ayrı bir program, whoopsiegünlüğe kaydedilen raporları izler ve kapsayıcı sorunları tanımlamak için otomatik olarak gruplandıkları merkezi bir veritabanına yükler.

Elde edilen veriler Ubuntu hata izleyicide görüntülenir :

Ubuntu'daki hata raporlarının grafiği

Toplu eğilimler herkese açıktır ve rapor ayrıntıları güvenilir geliştiriciler tarafından kullanılabilir. Daha fazla ayrıntı Ubuntu Wiki'de mevcuttur .

Varsayılan olarak, ubuntu-bugkararlı sürümlerde kilitlenme raporları için Launchpad'deki hataları açmaz, ancak isterseniz bunu yapılandırabilirsiniz . Bu değişikliği yaptıktan sonra, mevcut bir kilitlenme raporu için bir hata çalıştırarak açabilirsiniz ubuntu-bug /var/crash/foo.crash.


3

Toplanan bilgiler veya rapor bir hata izleme sistemine yüklenir.

Sistemdeki herhangi bir işlem, yaygın olarak 'kilitlenme' (segmentasyon ihlali, veri yolu hatası, kayan nokta istisnası vb.) Olarak adlandırılan bir sinyal nedeniyle ölürse veya örneğin paketlenmiş bir Python uygulaması yakalanmamış bir istisnayı yükseltirse, apport arka ucu otomatik olarak çağrılır.

/ Var / crash / içindeki bir dosyada bir ilk kilitlenme raporu üretir (dosya adı, kilitlenen yürütülebilir dosyanın ve kullanıcı kimliğinin adından oluşur). Kilitlenen işlem, şu anda oturum açmış olan kullanıcıya aitse veya bir sistem işlemine aitse ve kullanıcı bir yöneticiyse, apport, kilitlenme hakkında kullanıcıyı bilgilendirir ve sorunu bildirmeyi önerir.

Kullanıcı "Hata raporu gönder" onay kutusunu etkin bırakırsa , Apport toplanan bilgileri hata izleme sistemine yükler. Bundan sonra, paketlerin hata dosyalama sayfasını mantıklı bir varsayılan hata başlığıyla açar ve hata dosyalama işleminin geri kalanını web arayüzüne bırakır.

Ubuntu, hata izleme sistemimiz aracılığıyla her gün inanılmaz sayıda hata raporu alır. Bunların her birinin düzeltilebilmesi için okunması, değerlendirilmesi ve sıralanması gerekir. Bu, Yardımınızı Hatalarla Yardım konusunda kullanabileceğimiz yerdir. Hata triyaj sürecinin görsel bir temsili için, bu güzel Akış Şemalarına bakın.

Her hata raporu muhabirle yapılan bir görüşmedir. Herhangi bir muhabirin Ubuntu topluluğuyla genellikle ilk teması, eksiksiz bir hata raporu hazırlamaya çalışan bir hata triager'ıdır. İyi bir izlenim vermemiz çok önemlidir, bu yüzden lütfen nazik olun ve en iyi İngilizcenizi kullanmaya çalışın.

Basit, ayrıştırılmamış hatalar üzerinde çalışmak, bir hatanın yaşam döngüsünün her yönüyle uğraşmanız gerekeceğinden, triyaj prosedürüyle tanışmak için iyi bir yoldur. Ayrılmamış hatalar bölümü onları nerede bulacağınızı açıklar.

Hata Türleri

Apport raporları

Apport raporları, otomatik hata raporlama Apport programı aracılığıyla bildirilen hatalardır. Apport kullanarak hataları bildirmek, geliştiricilere etkilenen sistem hakkında birçok bilgi sağladığı için bir hatayı bildirmenin tercih edilen yoludur. Apport kullanıldığında, tüm süreci hızlandıran daha az ek bilgi gerekir.

Bu hataları, açıklamalarına eklenen sistem bilgileri listesinden tanıyabilirsiniz. Bazı programların Apport için kancaları vardır ve hata bildirirken daha fazla bilgi ekler. Bu bilgi genellikle eklerde bulunabilir.

Onaylanan hatalar

Bir hata 'Onaylandı' olarak işaretlendiğinde henüz tam olarak tetiklenmez. Bu hata 'Triaged' olarak işaretlenmeye çok yakın, ancak geliştiricilerin düzeltmeye hazır olduğundan emin olmanız gerekiyor.

Özellik talepleri

Hata raporu aslında bir özellik isteği ise, iki olasılık vardır. İstenen geliştirme küçük ve iyi tanımlanmışsa ve / veya öneri bir üst proje ile ilgiliyse, hatanın Önemi 'İstek Listesi'ne ayarlanmalıdır. Rapor tamamlandığında durum 'Triaged' olarak ayarlanmalıdır.

Yalnızca Ubuntu Hata Kontrolü ekibinin üyeleri bunu yapabilir. Üye değilseniz, bunu sizin için yapacak birine sormanız gerekir. Hata numarasını # ubuntu-bugs içine yapıştırın ve hatanın 'İstek Listesi'ne ayarlanması gerektiğini düşündüğünüzü söyleyin. Hemen fark edilmese de, birisi sizin için fark edecek ve ayarlayacaktır.

Dahili olarak nasıl çalışır?

Çökme engelleme

Apport, çekirdek dökümü doğrudan apport içine eklemek için / proc / sys / kernel / core_pattern kullanır:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c
$ 

Not: ulimit devre dışı bırakılmış çekirdek dosyalara ayarlanmış olsa bile (ulimit -c 0 kullanarak sıfır çekirdek dosya boyutunu belirleyerek), apport yine de çökmeyi yakalayacaktır. Python çökmelerini engellemek /etc/python*/sitecustomize.pyiçin, işlenmeyen istisnalara bir çağrı yapmak için apport yükler .

Misal

AppID, PID 1 (Upstart) ölürse temel dosyaları bile yakalayabilir:

  1. Upstart dahili bir tutarsızlık tespit ederse, SIGABRT sinyalini yükseltir.
  2. UPStart çökme işleyicisi SIGABRT'de çağrılır.
  3. Upstart kilitlenme işleyicisi bir alt işlemi çatallar.
  4. Upstart alt işlemi, çocuğun anormal şekilde çıkmasına neden olan sinyali yeniden yükseltir.
  5. Çekirdek, alt işlemin anormal bir şekilde çıktığını algılar ve apport'u çağırır, çekirdek dosyayı standart girdiyi (/ proc / sys / kernel / core_pattern nedeniyle) iletir.
  6. apport çekirdek dosyayı / var / crash / içindeki diske yazar.
  7. PID 1, çocuğunun sona ermesini bekler (yalnızca apport çekirdek dosyayı yazmayı bitirdikten sonra olur).
  8. PID 1 çıkar.
  9. çekirdek panikleri.
  10. Bir sonraki önyüklemede Whoopsie kilitlenme dosyasını algılar ve işler.

Arka uç

Gecikme ve CPU / IO etkisini olabildiğince düşük tutmak için, /usr/share/apport/apportyalnızca çökmüş işlem hala varken alınması gereken verileri toplar: /proc/pidçekirdek dökümü, yürütülebilir yol ve sinyal numarası bilgisi. Rapor yazılır /var/crash/executable_path.uid.crash.

Ön uç çağırma

Gnome'da güncelleme bildiricisi inotify saatini açık tutar /var/crash. Yeni bir şey olduğunda / usr / share / apport / apport-checkreports'u çağırır. Yeni raporlar varsa, yukarıdaki ekran görüntülerinde gösterilen ön uç olan / usr / share / apport / apport-gtk'yi çağırır.

Ön uç daha sonra paket sürümleri, paket dosyası sağlama toplamları veya işletim sistemi sürümü gibi ek bilgiler toplar ve eşleşen tüm paket kancalarını çağırır. Bunu devre dışı bırakmak için, com.ubuntu.update-notifier show-apport-crashes false (sıradan masaüstü kullanıcısı olarak) set ayarlarınızı çalıştırabilirsiniz.

Launchpad tabanlı otomatik toplayıcı

Kanonik veri merkezi, hataları apport ile otomatik olarak izleyen bir hizmet çalıştırır. Launchpad'deki hataları mimariye göre etiketleyerek bir geri çekilme yapılacak ve etiket kaldırılacaktır. Kullanılan etiketler need-i386-retrace veya need-amd64-retrace'tir. Duyuruyu görün.

Paket Başına Apport Kancaları

Paketlerin sistemden toplanan ve hata raporuna dahil edilen bilgileri belirtmesi mümkündür. Bunlar, paketlerdeki apport kancaları ile yapılır. Bazı yararlı örnekler için bakınız:

  • source_xorg.py - hata raporlarına ek günlük dosyaları ve donanım ayrıntıları ekler
  • usplash - belirli kod yollarındaki çökmeleri yoksayar
  • source_totem.py - muhabirlere sorular sorar ve yanıtlara göre farklı bilgiler toplar

/ usr / share / apport / package-hook. Apport kancaları sağlayan paketlerin bir listesi de vardır.

Çökme veya hata raporu apport üzerinden gönderilirse, ilgili kancalar otomatik olarak çalıştırılır. Apport olmadan dosyalanmış önceden bildirilmiş bir hatanız varsa ve bu kancalardan gelen bilgilerle ilgileniyorsanız, hata raporlayıcısından apport-collection bugnumber kullanmasını isteyebilirsiniz.

Kaynağı kullan, Luke!

  • Akış yukarı tarball'ı Launchpad proje sayfasından veya Ubuntu kaynak tarball'ı Ubuntu arşivinden indirebilirsiniz.
  • uygulaması Launchpad'deki RCS pazarı ile geliştirilmiştir. Buna katkıda bulunmak veya buna dayalı kendi sisteminizi geliştirmek istiyorsanız, bzr get lp: trunk için apport veya Ubuntu paketleme dalı için debcheckout -a apport ile kendi şubenizi alabilirsiniz.

Gelecek planları

Performansta çeşitli iyileştirmeler, raporlarla çalışmak için daha iyi araçlar ve daha fazla dilin entegrasyonu (Mono / Python yığın izleri, onaylama mesajları, vb.) İlgili spesifikasyona bakın.

Kaynaklar: Apport , Triyaj Nasıl Yapılır ve Apport nasıl etkinleştirilir


Bu alışkın olduğum süreç - ama şimdi son cümle artık geçerli görünmüyor - hiçbir web kullanıcı arayüzü açılmıyor. Sorumun cevabının aklıma getirdiği bir fikirle değiştirdim.
guntbert

Web kullanıcı arayüzü yerel değil (kullanıcı tarafında değil), ama çevrimiçi, ama emin değilim.
Mitch

Bu kaynak en son Kasım 2012 tarihinde güncellenmiştir. Bilgiler güncel olmayabilir ..
guntbert

Bunu gördüm, ama sanırım hiçbir şey değişmediği için güncellenmeye gerek yok sanırım. Şimdi belki 13.10 ortaya çıktığında, çoklu cihaz olacağından değişiklikler olacak. Son Apport ise 2,61 10 Ekim 2012 tarihli,
Mitch
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.