|
Les bonnes
choses à faire avant de poster une question: Cela va permettre de
connaitre les messages d'erreurs éventuels
au chargement des modules ainsi que leurs versions. less /var/log/XFree86.0.log 3) Si jamais le fait
de
lancer une appli TV vous faisait planter le système : a) Donner votre version du noyau
ainsi que son origine (kernel Mandrake installé sous forme
binaire, kernel gentoo et sa révision et son type, kernel
à la vanille avec ou sans patchs : préciser lesquels,
etc.). b) copiez les logs dans le
message que vous allez poster sur le forum: Si vous utiliser le
très classique syskdlog(le générateur de logs par
défaut d'une bonne majorité de distros), tapez la
commande suivante en mode root:
tail -f /var/log/messages Pour les autres qui utiliserait metalog (au lieu de syskdlog. La Gentoo par exemple), tapez la commande suivante en mode root: tail -f /var/log/kernel/log-aaaa-mm-jj-hh:min:ss ou tail -f /var/log/kernel/current 4) Installer un
version BTTV plus récente: bttv
78688 0 (unused) a) Décompresser l'archive.
Tapez la commande suivante:
tar -xzvf bttv-0.7.107.tar.gz b) Compilation des drivers. Tapez
la commande suivante: c) Installation des drivers. Tapez
la commande suivante: d) Vérification des
dépendances. Tapez la commande suivante:
a) Compiler xdTV en activant le
mode debug. Pour cela recompiler manuellement en passant la commande
suivante:
./configure --disable-nodebug && make b) Utiliser gdb 1) Lancer xdTV avec gdb: gdb xdtv
2) A l'invité (gdb) tapez: run (ou run -v 2, pour avoir plus de message) 3) si vous avez un message de ce type: Program received signal SIG32, Real-time event 32. 0x4076c714 in pthread_getconcurrency () from /lib/i686/libpthread.so.0 4) A l'invité (gdb) tapez: c (ou continue) jusqu'a ce que la fenêtre de xdTV apparaisse à l'écran 5) Vous savez reproduire un segfault allez dans xdTV, faites la ou les actions qui produisent un plantage de l'application. Lorsque xdTV s'est planté, voici ce que cela peut donner: Program received signal SIGSEGV, Segmentation fault. 0x4065e6c8 in XInternAtom () from /usr/X11R6/lib/libX11.so.6 6) vous retournez alors sur l'invité (gdb): Comment retrouver le bout de code qui a planté? a) utiliser la commande: where (ou backtrace)
(gdb) where #0 0x4065e6c8 in XInternAtom () from /usr/X11R6/lib/libX11.so.6 #1 0x08082a46 in main () #2 0x407cac57 in __libc_start_main () from /lib/i686/libc.so.6 Ici on voit que ca a planté dans le fonction main() et que c'est lié à la fonction XInternAtom () b) utiliser la commande up pour savoir ce qui s'est produit avant le plantage 7) vous avez repéré la fonction ou ca plante - break "le nom de la fonction" - run - step (plusieurs fois jusqu'a arriver a la fonction) 8) sortir de GDB: A l'invité (gdb) taper: quit
|
|
|