DebuggingNetworkManager_it

Debugging Central

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

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

`driver-madwifi`

Bugs dove viene usato il driver madwifi

`driver-ndiswrapper`

Bugs dove viene usato il driver ndiswrapper

`vpn`

Bug relativi ai moduli vpn di network-manager: openvpn, vpnc o pptp

`encryption-wep`

Bug dove viene usata la crittografia WEP

`encryption-wpa`

Bug dove viene usata la crittografia WPA

`encryption-wpa2`

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.


CategoryBugSquad

DebuggingNetworkManager_it (last edited 2012-05-18 14:08:45 by fabiomarconi)