Les bonnes choses à faire avant de poster une question:

Nous ne sommes pas devin ! Il faut donc nous donner des informations concernant votre matériel, vos messages d'erreurs,etc. si vous désirez de l'aide.

1) Donner des informations sur les  BTTV utilisés. Pour cela dans un shell tapez la commande suivante:

dmesg | grep bttv

Cela va permettre de connaitre les messages d'erreurs éventuels au chargement des modules ainsi que leurs versions.

2) Donner des informations sur le serveur X. Les messages d'erreurs sont stockés dans un fichier log. Tapez la commande suivante en mode root:

less /var/log/XFree86.0.log
ou
less /var/log/Xorg.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:

Il est recommandé d'utiliser les 0.7.x pour les noyaux de la série 2.4 (Video For Linux ou v4l1) et les 0.9.x (v4l2, des bugfixes peuvent apparaître de temps à autre) pour les noyaux de la série 2.6.

Les modules nécessaires peuvent être trouvés en tapant la commande suivante en mode root:
lsmod | grep bttv

bttv                       78688    0  (unused)
videodev             6336      2  [bttv]
i2c-algo-bit         8360       1  [bttv]
i2c-core              15816     0  [tuner bttv i2c-algo-bit]
soundcore          4164       4  [snd bttv]

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:
make

c) Installation des drivers. Tapez la commande suivante:
make install

d) Vérification des dépendances. Tapez la commande suivante:
depmod -a


5) Utiliser GDB:

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


Pour plus d'informations sur GDB ouvrez un shell et tapez la commande suivante : man gdb

 
La permission vous est accordée de faire des copies
et de distribuer ces copies sous les termes de la licence GNU FDL.
Document sous licence FDL