DebuggingNetworkManager_it
This page is part of the debugging series — pages with debugging details for a variety of Ubuntu packages. |
Sommario
Se la segnalazione dell'anomalia è pertinente a network-manager che non può connettersi, il titolo deve essere in questo formato:
"[CHIPSET] non si connette a (ENCRYPT_METHOD)"
dove CHIPSET è il driver wireless usato e ENCRYPT_METHOD è il metodo di crittografia usato dalla vostra rete wireless.
Capire l'anomalia ed ottenere informazioni
Molte informazioni per il debugging sono reperibili sul wiki GNOME Live: NetworkManager/Debugging.
Potrebbe tornare utile guardare in Darren Albers' FAQ.
Informazioni aggiuntive inerenti disconnessioni o altre anomalie in DebuggingNetworkManager/ReasonCodes .
Un codice reason/status similare ma valido per wpasupplicant è reperibile su: ieee802_11_defs.h
Ottenere informazioni per il debug
Innanzitutto, assicurarsi di avere lo script debug helper: debug-helper.py.
Scaricabile anche con il comando:
wget http://cgit.freedesktop.org/NetworkManager/NetworkManager/plain/test/debug-helper.py
Sarà così possibile seguire le istruzioni dello sviluppatore nella segnalazione sull'opportuna linea di comando da usare; oppure eseguirlo direttamente come:
Ottenere file di debug da NetworkManager
sudo python debug-helper.py --nm debug
Il file generato sarà scritto in /var/log/syslog. Per disabilitarlo, passare info invece di debug nel precedente comando, o riavviare.
Ottenere file di debug da ModemManager
sudo python debug-helper.py --mm debug
Il file generato sarà scritto in /var/log/syslog. Per disabilitarlo, passare info invece di debug nel precedente comando, o riavviare.
Vedere anche DebuggingModemmanager_it.
Ottenere file di debug da wpasupplicant
sudo python debug-helper.py --wpa msgdump
Il file generato sarà scritto in /var/log/syslog. Per disabilitarlo, passare info invece di debug nel precedente comando, o riavviare.
Catturare un syslog
Mischiando quanto sopra è perfettamente accettabile se si vuole vedere come NetworkManager ed altre parti dello stack interaginscono insieme.
Ma per tracciare ed analizzare una anomalia, si ha la necesssità di avere un file di log completo. Per fare ciò catturare un test case completo ed allegarlo alla segnalazione (per cortesia evitate di tagliare...). Se possibile aggiungere dei marcatori, così il triager potrà vedere quali azioni avete fatto e in quale momento (non è essenziale ma aiuta molto).
Per catturare il syslog:
tail -n0 -f /var/log/syslog > /tmp/syslog
per fermarlo premere Ctrl-C (sarà necessario aprire un 'altra finestra se si devono eseguire altri comandi).
Aggiungere dei marcatori è come aggiungere nuove linee con un editor di testo che indicano al triager cosa succede ed in quale momento. Potete farlo anche al volo mentre testate con il comando logger "[ clicked on wireless network 'ubuntu']" .
Esempio di marcatore:
Sep 6 08:12:30 ... [ clicked on wireless network 'ubuntu'] Sep 6 08:12:31 ... ...
Gestione problemi 3G / modem
Una piccola cosa da aggiungere, ma molto utile, nel caso di problemi con 3G:
L'output di udevadm per tty devices, e l'output di lsusb:
$ udevadm info --query=all --path=/sys/class/tty/... --attribute-walk
$ lsusb
Un Testcase
Un buon testcase è un elenco passo passo di istruzioni per poter riprodure il bug partendo dal driver scaricato e NetworkManager fermato.
Fermare NetworkManager
sudo stop network-manager
Per scaricare il driver sudo modprobe -r DRIVER .
Quindi ricaricare il driver sudo modprobe DRIVER ed avviare NetworkManager:
sudo start network-manager
Debugging del crash
Per installare i simboli di debug, aggiungere le seguenti linee al vostro /etc/apt/sources.list
deb http://ddebs.ubuntu.com/ precise main universe
o
deb http://ddebs.ubuntu.com/ oneiric main universe
Quindi installare gli appropriati pacchetti dbgsym:
sudo apt-get update sudo apt-get install network-manager-dbgsym libnm-util2-dbgsym libnm-glib4-dbgsym libglib2.0-0-dbgsym
Fermare quindi NetworkManager:
sudo stop network-manager
Eseguire NetworkManager in un debugger
sudo gdb /usr/sbin/NetworkManager ... (gdb) run --no-daemon
Quando avviene il crash ottenere la backtrace
(gdb) bt ... (gdb) bt full ... (gdb) thread apply all bt full ...
ed allegare la backtrace insieme a /var/log/syslog alla segnalazione.
Bug Tags
Qesti tags consentono di isolare i bug in piccoli sottogruppi, fornendo un semplice e veloce metodo per lavorare a specifici problemi.
Tag |
caso d'uso |
Bugs dove viene usato il driver madwifi |
|
Bugs dove viene usato il driver ndiswrapper |
|
Bug relativi ai moduli vpn di network-manager: openvpn, vpnc o pptp |
|
Bug dove viene usata la crittografia WEP |
|
Bug dove viene usata la crittografia WPA |
|
Bug dove viene usata la crittografia WPA2 |
I sopradescritti tag sono specifici dell'applicazione NetworkManager, per dei tag più generici, consultare la pagina Bugs/Tags.
Testare una patch
È sempre una buona idea controllare in NM trunk PPA per vedere se una nuova versione di NetworkManager fixa il bug che state sperimentando. Vi preghiamo di essere cauti, dato che questi sono rilasci giornalieri che potrebbero influenzare altre cose e sono da considerarsi instabili.
Talvolta lo sviluppatore potrebbe richiedere di provare una patch. Procedere come segue se il bug riguarda network-manager, altrimenti se riguarda network-manager-applet o qualche altro pacchetto, semplicemente sostituire il nome
Vedere DebuggingModemmanager_it per le stesse istruzioni per Modemmanager.
# installare le dipendenze sudo apt-get install build-essential fakeroot devscripts sudo apt-get build-dep network-manager # ottenenre il sorgente sudo apt-get source network-manager # spostarsi nella directory del sorgente cd network-manager-*/ # applicare la patch (notare che -p1 potrebbe anche essere -p0 se la patch è stata creata senza un prefisso extra in diff path) patch -p1 < /tmp/yourdownloadedpatch.diff # build dei binari debuild -b -uc # i pacchetti sono prodotti nella directory genitrice cd ../ # installare tutti i pacchetti nm sudo dpkg -i network-manager*.deb libnm-*.deb
Nota che non si deve cambiare la versione del pacchetto. Così per ritornare alla versione uff basterà eseguire:
sudo apt-get install --reinstall network-manager libnm-util2 libnm-glib4
Se durante il build avete installato altri pacchetti, fate lo stesso anche per questi ultimi.
DebuggingNetworkManager_it (last edited 2012-05-18 14:08:45 by dynamic-adsl-78-14-229-79)