Pokud používáte aplikace Mozilla.org déle, možná jste se setkali s jejich pádem – celá aplikace zmizela, objevilo se hlášení, že aplikace vykonala chybnou operaci a musela být ukončena. Dokážete popsat vývojářům aplikace, co se vlastně stalo a kde v kódu mají hledat problém? Nejspíš ne. Ale existuje nástroj, který to umí úplně báječně.
Talkback nebo též Mozilla Quality Feedback Agent je malý program přidaný k aplikacím Mozilla.org. Má jediný úkol – sbírat informace o dění v aplikaci v okamžiku pádu. Neděste se, nejde o žádný spyware, neshromažďuje žádné citlivé informace. Sebrané informace pomáhají vývojářům aplikací Mozilla.org rychle najít příčinu pádu a opravit ji. Odeslání informací o pádu je jednou z mnoha cest, jak se i vy můžete podílet na zlepšování kvality programů, které sami používáte.
Talkback je součastí všech hlavních programů, které dnes Mozilla.org nabízí, naleznete jej tedy v Mozilla Suite, Firefoxu a Thunderbirdu pro Windows, GNU/Linux i Mac OS X. Pro potřeby tohoto článku jsme zvolili Talkback u Firefoxu na Windows.
Chceme-li ve Firefoxu používat Talkback, musíme již při instalaci zvolit Vlastní instalaci:
Vlastní instalace se od Standardní příliš neliší. V následujícím kroku potvrďte složku pro instalaci, v kroku Výběr komponent zaškrtnete položku Agent pro oznamování chyb:
Zbylé kroky instalace potvrďte. Po skončení instalace máme nainstalovaný Firefox i s Talkbackem.
V okamžiku, kdy dojde k pádu aplikace Mozilla.org, objeví se úvodní dialog Talkbacku. Při prvním pádu se v několika krátkých krocích Talkback představí a zároveň budete mít možnost si jej nastavit.
První dialogové okno obsahuje jen představení Talkbacku a jelikož už víte, k čemu Talkback slouží, zvolte tlačítko Next.
V druhém kroku se dozvíte o ochraně vašeho soukromí: Talkback nesbírá bez vašeho vědomí e-mailové či jiné adresy, hesla ani jiná data z profilů uživatelů. Všechny odeslané informace budou použity pouze pro potřebu opravy chyb a zlepšení kvality aplikace, rozhodně nebudou poskytnuty třetí straně. Pokračujte tlačítkem Next.
Ve třetím kroku máte možnost Talkback vypnout. Pokud si jej přejete používat, nechte volbu Turn Agent on zaškrtnutou a zvolte tlačítko Finish. Pokud máte přímé připojení k Internetu bez proxy serveru, máte Talkback nastavený a připravený hlásit problémy.
Jste-li k Internetu připojeni přes proxy, bude potřeba její adresu v Talkbacku nastavit. Spusťte Talkback (v odstavci Zjišťujeme Talkback incident ID zjistíte jak) a vyberte z nabídky Setting položku Options...
V otevřeném dialogu zvolte záložku proxy Server, zaškrtněte typ své proxy (obvykle HTTP) a vyplňte její IP adresu a port (oba údaje můžete zjistit z vašeho webového prohlížeče nebo u administrátora). Po uložení tlačítkem OK je Talkback správně nakonfigurován a může odeslat hlašení o pádu.
Po nastavení Talkbacku či při dalším pádu se objeví okno, které slouží pro samotné hlášení pádu aplikace.
V prvém políčku můžete vyplnit svoji e-mailovou adresu, ale není povinná. Pokud pád nastal při prohlížení webových stránek, vyplňte do následujícího políčka URL problematické stránky či alespoň adresu webu. V posledním, největším poli anglicky popište, co jste dělali těsně před pádem. Neovládáte-li angličtinu, můžete buď popis vynechat nebo napsat na začátku czech: a popsat vše v češtině.
Zaškrtnutím volby Automatically send incidents můžete nastavit Talkback na autopilota: bude hlášení odesílat sám, aniž by po vás chtěl jakoukoliv akci. Doporučujeme ponechat volbu nezaškrtnutou, tj. odesílat ručně.
Chcete-li mít jistotu o tom, jaké informace Talkback odesílá, můžete si je pomocí tlačítka Show Details zobrazit. Považujete-li některou z nich za důvěrnou (např. uživatelské jméno, seznam běžících procesů, počet spuštění Firefoxu či jméno počítače), můžete je z odesílaných informací vyřadit přepnutím zaškrtávátka. Zpět do předchozího dialogu se vrátíte tlačítkem Close.
Nyní je vše připraveno pro odeslání: stiskněte tlačítko Send. Talkback začne informace odesílat, stav odeslání vám ukazuje v malém okénku:
Pokud Talkback úspěšně odešle informace o vašem pádu, uloží se na serveru Mozilla.org v Kalifornii k mnoha dalším. Hotovo, můžete znovu spustit Firefox, Thunderbird či Mozilla Suite a vrátit ke své práci nebo zábavě.
Jste-li zvídavá povaha, můžete se vypravit na dobrodružnou cestu za hledáním příčiny vašeho pádu. K tomu budeme potřebovat zjistit Talkback incident ID, identifikaci pádu vaší aplikace přidělenou hlavním serverem Talkbacku. S požadavkem na Talkback incident ID se také můžete setkat při nahlášení chyby pádu aplikace do Bugzilly.
V adresáři, do kterého jste Firefox nainstalovali, otevřete podadresář extensions\talkback@mozilla.org\components a v něm spusťte program talkback.exe. Otevře se vám následující okno Talkbacku:
Hlavní plocha aplikace obsahuje přehled všech pádů, které Talkback zaznamenal, chronologicky řazený od nejnovějších po nejstarší incidenty. V každém řádku naleznete nejprve stav odeslání (informace o pádu ještě mohou čekat na odeslání), za ním následuje incident ID (řetězec jako TB15251987Q), čas zachycení pádu, typ pádu a komentář, který jste k pádu sami připsali.
Klepněte myší na první řádek, který odpovídá poslednímu pádu Firefoxu, a zkopírujte incident ID do schránky pomocí klávesové zkratky Ctrl+C.
Mozilla.org provozuje veřejný Talkback server, který vám umožní zobrazit informace o libovolném zaznamenaném pádu. Protože jde ale o službu dostupnou komukoliv, nezobrazuje žádné informace, které by bylo možné považovat za důvěrné.
Na titulní straně serveru najdeme několik boxíků:
Protože chceme vědět více o našem pádu, zvolíme FastFind, do jehož políčka vložíme incident ID TB1944342K našeho pádu Firefoxu a formulář odešleme klávesou Enter nebo tlačítkem Go.
Server Talkbacku najde informace o našem pádu a zobrazí je v přehledné tabulce. Věnovat se budeme především řádce se signaturou zásobníku (Stack Signature), podle které vývojáři různé pády aplikací rozlišují. Signatura odpovídá obvykle jménu zdrojového souboru a jménu funkce, kde pád nastal.
V našem případě má signatura hodnotu nsFrameManager::GetPropertyListFor. Hodnota signatury je odkazem na všechna hlášení chyb v Bugzille, která mají v názvu či v některém z komentářů uvedenou naši signaturu. Bugzilla nám vrací seznam čtyř chyb, které by mohly s pádem souviset:
| ID | Sev | Pri | Plt | Assignee | Status | Resolution | Summary |
| 232356 | cri | -- | All | general@dom.bugs | NEW | entering parent.close in the console crashes mozilla [@ n... | |
| 242213 | min | -- | PC | timeless@bemail.org | RESO | DUPL | Random crash that doesn't make much sense [@ nsFrameManage... |
| 244305 | cri | -- | PC | nobody@mozilla.org | NEW | top.close() crashes JS console [@ nsFrameManager::GetProp... | |
| 265790 | cri | -- | PC | danm.moz@gmail.com | NEW | "Force links ... to open in a new tab" can let a tab clos... |
Hned první z nalezených chyb má svůj popis velmi podobný situaci, která způsobila náš pád. Po dalším prostudování detailů z jejího chybového hlášení můžeme prohlásit, že pád Firefoxu způsobila chyba 232356. Zároveň víme, že není potřeba zadávat do Bugzilly vlastní hlášení o této chybě, protože by šlo o duplicitní hlášení.
16. 11. 2004, CZilla Tým