<> ||<>|| Questo documento spiega come installare i pacchetti di debug in Ubuntu che forniranno utili informazioni inerenti l'anomalia. == Pacchetti contenenti i simboli di debug == Innanzitutto verificare se esiste, nei repository main, un pacchetto equivalente ma con sufffisso -dbg. Questi sono i pacchetti contenenti i siboli di debug ed equivalgono a '-dbgsym' descritto più avanti. È possibile usare in tutta sicurezza il pacchetto di debuging, ma non entrambi contemporaneamente. Provare ad installare il pacchetto aggiungendo -dbg al suo nome, per esempio: {{{ sudo apt-get install xserver-xorg-core-dbg }}} se il pachetto in questione è ''xserver-xorg-core''. Altrimenti se il pacchetto -dbg non esiste: 1. Creare un `/etc/apt/sources.list.d/ddebs.list` eseguendo la seguente linea in un terminale: {{{ echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse" | \ sudo tee -a /etc/apt/sources.list.d/ddebs.list }}} 1. I rilasci stabili (non alpha e beta) richiedono l'aggiunta di altre tre linee al medesimo file, quindi eseguire il seguente comando nel terminale: {{{ echo "deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse deb http://ddebs.ubuntu.com $(lsb_release -cs)-security main restricted universe multiverse deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse" | \ sudo tee -a /etc/apt/sources.list.d/ddebs.list }}} È possibile anche aggiungere queste linee usando Ubuntu Software Center: * Avviare ''Software Center'' e nella barra superiore scegliere ''Modifica'' -> ''Sorgenti Software''. * Choose ''Software Sources'' or ''Repositories'' via the ''Settings'' menu, and click on the ''Third-Party Software'' tab. * Scegliere ''Altro software'' -> ''Aggiungi'' ed inserire le tre linee una alla volta. 1. Importare l'archivio dei simboli di debug tramita chiave: {{{ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01 }}} 1. Quindi eseguire {{{ sudo apt-get update }}} per aggiornare la vostra lista di pacchetti. 1. I pacchetti con i simboli di debug hanno il suffisso '-dbgsym' quindi per installare il pacchetto 'yelp' si dovrà eseguire: {{{ apt-cache policy yelp }}} Ciò mostrerà la versione attualmente installata (si userà 2.22.1-0ubuntu2.8.04.1 in questo esempio). '''NOTA:''' 'yelp' [che è il nome del pacchetto per "Aiuto e Supporto"] è ''solo un esempio'' e '''non''' e non una parte del comando: 'yelp' è usato solamente per mostrare la procedura. Si dovra cambiare 'yelp' con il nome del pacchetto di cui si vuole il debug. 1. Installazione dei simboli di debug: {{{ sudo apt-get install yelp-dbgsym=2.22.1-0ubuntu2.8.04.1 }}} È anche possibile usare Ubuntu Software Center e cercare 'yelp-dbgsym' ed installarlo da lì. La procedura sopra descritta installerà la simbologia di debug per il solo pacchetto 'yelp'. Potrebbe però accadere che il pacchetto yelp utilizzi delle librerie condivise in altri pacchetti, sarà quindi necessario dover installare anche la simbologia di debug anche per quei pacchetti per avere uno stacktrace utilizzzabile. Per ovviare scaricare lo script [[attachment:list-dbgsym-packages-v2.sh]] ed eseguirlo (dopo un chmod a+x list-symbols-packages-v2.sh) in questo modo: /!\ aggiornare [[attachment:list-dbgsym-packages-v2.sh]] a list-symbols-packages-v2.sh. Questo è il primo passo per renderlo compatibile con il nuovo GDB (che per impostazine predefinita non carica più tutte le librerie all'avvio). -v2 attualmente funziona solo in rapporto ad un binario attualmente in esecuzione (es., con '-p $(pidof ') {{{ bash list-symbols-packages-v2.sh yelp }}} per ottenere una lista completa di pacchetti da installare. Lo script può anche essere aggregato ad un processo in esecuzione ed in questo caso, raccomandabile, si avrà una lista ancora più completa di pacchetti da installare, semprechè il vostro problema non vi impedisca l'esecuzione del programma. È possibile ottenere l'ID di un processo tramite pidof, cos' mentre si avrà yelp in esecuzione si potrà eseguire: {{{ bash list-symbols-packages-v2.sh -p $(pidof -s yelp) }}} per ottenere una lista di pacchetti utile a fornire le migliori informazioni di debug. Se il proceso in esecuzione è un server (demone), sarà necessario eseguire 'list-symbols-packages.sh' con sudo. a. Ora è possibile ottenere una [[Backtrace]]. a. Oppure anche eseguire [[Valgrind]], se il programma crasha con un errore di segmentazione "Segmentation fault" o un errore di bus "Bus error". a. Opzionalmente, vi potrà essere richiesto di produrre una [[Strace]]. a. È sempre utile fornire il file : '''~/.xsession-errors''' === Come rimuovere tutto ciò e tornare ad un sistema normale dopo aver fornito la traccia? === È possibile rimuovere tutti i simboly di debug ed i repository ddebs con il seguenti comandi: {{{ sudo apt-get remove \.*-dbgsym sudo rm /etc/apt/sources.list.d/ddebs.list sudo apt-get update }}} === Riferimenti === * Announcement: https://lists.ubuntu.com/archives/ubuntu-devel-announce/2006-September/000195.html == Il server Xorg == Il server X, in maniera predefinita, intrappola i soui crash e dump in una stack trace in /var/log/Xorg.0.log. Tuttavia, questo stack viene modificato dal gestore di segnale stesso. Per ottenere un crash "normale" che attiverà un core dump (e segnalazione da parte di "Apport"), aggiungere al file /etc/X11/xorg.conf: {{{ Section "ServerFlags" Option "NoTrapSignals" "true" EndSection }}} Vi preghiamo di fare riferimento a [[X/Debugging|debug Xorg server crashes.]] == Info for the BugSquad == If you're trying to `apport-retrace` a crash report from a bug that didn't happen on the same Ubuntu release as the one you're running, do the following: Say that you're running `Gutsy` and the crash happened on `Feisty`: 0. This will create a minimal `feisty` system. {{{ sudo mkdir -p /chroots/feisty sudo debootstrap feisty /chroots/feisty/}}} 0. Now you change into this minimal `feisty` system. {{{ sudo chroot /chroots/feisty}}} 0. edit `/etc/apt/sources/list` and all the repositories you need, especially Martin's ddeb repository. 0. {{{ apt-get update; apt-get install gdb apport}}} 0. use `apport-retrace` as you're used to. For more information on dealing with bug reports [[Apport]] see [[Bugs/ApportRetraces]]. ---- CategoryBugSquad CategoryDebugging