Hlavní navigace

ABRT automaticky nahlásí chyby za vás

Daniel Novotný

S hlášením chyb v software vám pomůže projekt, který se nyní „peče“ v Red Hatu: Automatic Bug Reporting Tool, zkráceně ABRT. Původní myšlenkou projektu bylo umožnit začátečníkům jednoduchým způsobem hlásit chyby v aplikacích, ale díky propracovanému systému pluginů zvládne tento nástroj nyní daleko víc.

Základní scénář (přednastavená konfigurace, aktivní po instalaci) vypadá následovně: když se aplikace nestandardně ukončí, v systémové liště se objeví informace o pádu:

ABRT 1

Pokud kliknete na tuto ikonku, objeví se okno zobrazující všechny uložené pády, z něhož je možno kliknutím na „report“ nahlásit chybu do Bugzilly.

ABRT 2
ABRT 3
ABRT 4

Hlášení chyby obsahuje backtrace, tedy informace, v které části programu k pádu došlo.

Takže máme za sebou jednoduchý popis standardní konfigurace a můžeme se podívat „pod kapotu“, co dalšího tento nástroj umí:

Abrt „odchytává“ pády, čili nestandardní ukončení, aplikací. V okamžiku pádu se probudí ABRT daemon… a něco provede. Takto obecně jsem to napsal proto, že co se konkrétně provede, závisí na konfiguraci v souboru abrt.conf a v konfiguraci jednotlivých pluginů.

V „centrálním“ konfiguračním souboru se specifikuje, které z pluginů a v jakém případě se spustí. Základní rozlišení je na kompilované programy (napsané v C/C++) a programy v Pythonu. Díky modulární architektuře „analyzerů“ bude tento seznam rozšířen třeba i na Javu nebo další typy programů. Dále je možno specifikovat konkrétní balík: které pluginy spustit (a s jakými parametry) v okamžiku, kdy program z daného balíku spadne. Dále je zde sekce [cron], kde můžete naplánovat spuštění nějakého pluginu v konkrétním čase či časovém intervalu.

Nyní již přistoupíme ke konkrétnímu popisu pluginů:

  • Bugzilla plugin jste již viděli: specifikujete mu přihlašovací údaje do Bugzilly a on pro daný balíček vyplní bug report.
  • podobný je Kerneloops plugin, který vyplní chybovou zprávu v kerneloops trackeru.
  • Logger loguje data o pádu do souboru.
  • Mailx plugin pošle mail (se zadaným předmětem a adresou), pokud je spuštěn.
  • FileTransfer plugin pošle data o pádu po síti (FTP, SCP a tak dále) na jiný počítač.
  • nejobecnější RunApp plugin spustí libovolnou externí aplikaci, lze specifikovat příkazový řádek a výstup do souboru.
  • je možno vytvářet vlastní pluginy, viz soubor PLUGINS-HOWTO v balíku ABRT.

Možná vás při popisu Bugzilla pluginu napadlo, co se stane, když jeden a tentýž program spadne stejným způsobem znovu: bude se generovat pokaždé nové hlášení o chybě? Bohudík nebude: ABRT vždy u chyby spočítá její hash a poté porovnává tento hash s předchozími položkami v databázi: chyba se pak neukládá dvakrát znovu.

Stejně tak pokud je položka s daným hashem v Bugzille již vyplněna (hash píšeme na Bugzilla whiteboard), místo nového nahlášení chyby se pouze přidá komentář „+1“.

Další netriviální věcí, na niž je třeba dát pozor, jsou „konkurenční“ odchytávače chyb, například BugBuddy pro GNOME aplikace: věc se má tak, že pokud jsou aktivní, tak se „ke slovu“ dostanou dříve než ABRT. To je spíše vlastnost než chyba, protože tyto aplikace mohou nahlásit detailnější informace o chybě „svých“ programů. Pokud je vypneme, přijde ke slovu – jako záchranná síť o patro níž – ABRT.

Zmiňme ještě fakt, že ABRT se „stará“ pouze o balíčky: pokud máte v systému nějaký program zkompilovaný „na divoko“ přímo ze zdrojových kódů, ABRT od něj dá ruce pryč. Opět nejde o chybu, ale o vlastnost: takový program by se těžko reportoval do Bugzilly dané distribuce…

Instalace

distribuci Fedora 11 je ABRT již přítomen v repositářích, stačí zadat

$ yum install abrt-desktop

a máte základní nastavení,

$ yum install abrt*

pro všechny pluginy. K dispozici jsou i manuálové stránky s podrobnější dokumentací.

Pokud chcete sledovat nejnovější vývoj, zdrojové kódy jsou k dispozici v GIT repositáři:

$ git clone git://git.fedorahosted.org/git/abrt.git

Ještě bych rád uvedl nějaký příklad konfigurace /etc/abrt/abrt.conf, abyste viděli, jak nastavení „vypadají“:

[common]
Blacklist=firefox
EnabledPlugins=SQLite3,CCpp,Logger,Bugzilla,Python,Mailx,KerneloopsScanner

[AnalyzersActionsAndReporters]
CCpp = Bugzilla
CCpp:httpd = Mailx("[abrt] Apache crashed")

[cron]
10 = KerneloopsScanner

Popis konfigurace řádek po řádku:

  1. pády Firefoxu ignorujeme.
  2. další řádek obsahuje všechny „povolené“ pluginy (ty, které ABRT při startu načte).
  3. při pádu v kompilované aplikaci se spustí Bugzilla plugin.
  4. při pádu v balíku httpd se pošle mail na adresu. definovanou v konfiguračním souboru Mailx pluginu.
  5. každých deset sekund se zjišťuje, zda proběhl nějaký kernel oops.

Na závěr vám přejeme, ať vaše aplikace padají co nejméně, k čemuž snad přispěje i nahlášení chyb tímto novým, automatizovaným způsobem.

Našli jste v článku chybu?

14. 9. 2009 23:40

Lael Ophir (neregistrovaný)

Obšleh z Ubuntu? Kdepak, je to obšleh z Windows. Ve Vistě je aplikace Problem Reports and Solutions, která sbírá hlášení o chybách, posílá je MS, a případně upozorňuje na řešení problémů.

2. 9. 2009 21:17

Gargamel (neregistrovaný)

Ano, cte a v urcitych pripadech jsou cennymi zdroji informaci. Predstav si demona, bezici v pozadi, poskytujici sluzby pres d-bus. Spadne-li, d-bus jej automaticky restartuje a uzivatel povetsinou nepozna, ze se neco stalo (obcas se objevi nedefinovane chovani aplikace, ktera ocekava nejake data od padleho demona). Az kontrolou logovanych padu (dmesg u novejsich kernelu) muze nekoho napadnout, ze neco pada. V tomto pripade je ABRT vitanym pomocnikem.

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

DigiZone.cz: Velká cena v Abú Dhabí: 131 ti­síc diváků

Velká cena v Abú Dhabí: 131 ti­síc diváků

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Potvrzeno: Pobyt v lese je skvělý na imunitu

Potvrzeno: Pobyt v lese je skvělý na imunitu

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte