Debugging_it

Se in caso di un crash di Chromium si vuole riportare un bug upstream, utilizzare il loro modello linux. Includere sempre il risultato del comando:

$ dpkg -l | grep chromium-

Sarà inoltre necessario fornire una backtrace. È possibile ottenerla utilizzando gdb con l'ausilio dei simboli di debug.

Ottenere una backtrace

I simboli di debug si installano tramite un apposito pacchetto, chiamato chromium-browser-dbg installabile come un normale pacchetto. Una volta installato, aprire il terminale ed eseguire:

$ chromium-browser --debug 2>&1 | tee gdb-chromium.txt
(gdb) handle SIG33 pass nostop noprint
(gdb) set pagination 0
(gdb) run <arguments, if any>

Eseguire le operazioni per riprodurre il crash, quindi:

(gdb) backtrace
(gdb) thread apply all backtrace
(gdb) quit

Nel caso la backtrace mostri molti punti interrogativi (tipo "#5 0x083949e0 in ?? ()"), significa che si necessitano ulteriori pacchetti con la simbologia di debugging. Per vedere quali librerie Chromium sta utilizzando, provare:

$ ldd /usr/lib/chromium-browser/chromium-browser

Quindi cercare il corrispondente pacchetto -dbg o -dbgsym, vedere come abilitarne i repository specifici.

Debugging dei processi figli

Siccome Chromium normalmente produce molti processi secondari (come le sandbox ed i renderers), la backtrace del processo browser potrebbe non essere utile ( a meno che non sia il processo principale a crashare). Per tracciare i processi figlio bisogna eseguire Chromium con --single-process:

$ chromium-browser --debug --single-process 2>&1 | tee gdb-chromium.txt

Quindi procedere come spiegato con gdb.

Una volta che si ritiene di avere una backtrace sufficiente (gdb-chromium.txt) allegarla al bug report.


CategoryDebugging CategoryDebugging

Chromium/Debugging_it (last edited 2012-11-03 18:03:09 by dynamic-adsl-78-14-229-178)