Signaler un problème, un bogue ou un plantage

En effectuant un rapport de bogue précis, vous avez généralement réalisé la moitié du travail de correction.

ALORS, SOYEZ PRÉCIS ET INFORMATIF!

1.Le suivi de bogue (Bug Tracker)

Le suivi de bug est actuellement hébergé sur http://gambaswiki.org/bugtracker en ce moment. Veuillez rapporter vos bogues là. Notez que cela doit enregistrer une adresse email valide pour pouvoir poster des rapports de bogue.

Mais, s’il vous plaît, n’oubliez pas de :
  • Donnez des détails sur votre configuration : votre processeur, votre distribution (Mandriva, SuSE, Debian, etc.) avec le numéro de version, votre version de noyau, et tout ce qui vous paraît utile.

  • SIGNALEZ QUELLE VERSION DE Gambas VOUS UTILISEZ.

  • Pour les projets avec un GUI, indiquez quel est votre environnement de bureau et quel composant graphique vous utilisez.

  • Tentez d’isoler le problème dans un petit projet Gambas, si possible.

Vous pouvez rassembler toute information nécessaire via l'entrée menu "Informations Système" dans l'environnement de développement :

2. La liste de diffusion

Si vous ne pouvez pas résoudre votre problème, essayez en premier lieu de demander sur la liste de diffusion. Peut être que quelqu'un peut vous aider, qui sait ? Mais s'il vous plait :
  • Donnez des détails sur votre configuration : votre processeur, votre distribution (Mandriva, SuSE, Debian, etc.) avec le numéro de version, votre version de noyau, et tout ce qui vous paraît utile.

  • SIGNALEZ QUELLE VERSION DE Gambas VOUS UTILISEZ.

  • Pour les projets avec un GUI, indiquez quel est votre environnement de bureau et quel composant graphique vous utilisez.

  • Tenter d’isoler le problème dans un petit projet Gambas, si possible.

3. Signaler un problème de compilation de Gambas

Si vous ne réussissez pas à compiler et installer Gambas, fournissez, s’il vous plait, les sorties des quatre commandes ./reconf-all, ./configure, make, et make install.

Pour cela, entrez les commandes suivantes dans une console :

$ cd /gambas/source/directory
$ (./configure -C && make) > output.txt 2>&1
$ su
...
$ make install > install.txt 2>&1

Et envoyez les fichiers "output.txt" et "install.txt"

4. Signaler un bogue

En dernier ressort, et si au moins vous êtes sûr que c’est un affreux bogue, vous pouvez m’envoyer un e-mail, mais S’IL VOUS PLAÎT :
  • Mettez le mot « bug » quelque part dans le sujet.

  • Donnez des détails sur votre configuration : votre processeur, votre distribution (Mandriva, SuSE, Debian, etc.) avec le numéro de version, votre version de noyau, et tout ce qui vous paraît utile.

  • SIGNALEZ QUELLE VERSION DE Gambas VOUS UTILISEZ.

  • Pour les projets avec un GUI, indiquez quel est votre environnement de bureau et quel composant graphique vous utilisez.

  • Si c’est un problème à la compilation ou à l’exécution d’un programme, POSTEZ VOTRE PROJET Gambas pour que je puisse le traiter.

  • Si vous ne voulez pas envoyer votre projet, essayez au moins d’isoler le problème dans un petit projet.

5. Signaler un plantage (faute de segmentation, ou signal #11)

Si Gambas se plante, vous pouvez le tracer et me dire exactement où il s'est planté. C’est très utile pour moi. Si vous ne savez pas comment le faire, lisez ceci attentivement :

Vous devez compiler Gambas avec les informations de débogage activées, ce qui se fait normalement par défaut.

  • Ouvrez un terminal et placez-vous dans le répertoire du projet qui pose problème.

    $ cd /chemin/de/mon/projet/gambas
    

Si l’IDE se plante, allez dans les sources de l’IDE dans le répertoire app/src/gambas3 du paquet des sources. N’oubliez pas de compiler l’IDE. Par exemple :

$ cd ~/gambas3-xxx/app/src/gambas3
$ gbc3 -agt

  • Lancez le débogueur GNU.

    $ gdb gbx3
    GNU gdb (GDB) 7.2-ubuntu
    Copyright (C) 2010 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "i686-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /usr/bin/gbx3...done.
    (gdb)
    

  • Faites tourner le programme jusqu’à ce qu’il se plante.

    (gdb) run
    Starting program: /usr/bin/gbx3
    ...
    Program received signal SIGSEGV, Segmentation fault.
    0x4011010e in select () from /lib/i686/libc.so.6
    (gdb)
    

  • Puis tapez la commande 'bt' pour obtenir le contenu de la pile.

    (gdb) bt
    #0  0x4011010e in select () from /lib/i686/libc.so.6
    #1  0x408ae730 in typeinfo for QMotifStyle () from /usr/lib/qt3/lib/libqt-mt.so.3
    #2  0x4040e270 in QApplication::enter_loop() () from /usr/lib/qt3/lib/libqt-mt.so.3
    #3  0x401d5b0b in MyMainWindow::showModal() (this=0x81d56c0) at CWindow.cpp:770
    #4  0x401d4a8b in CWINDOW_show_modal(void*, void*) (_object=0x81cc7c8, _param=0xbffff4c0)
        at CWindow.cpp:222
    #5  0x0804f624 in EXEC_call_native (exec=0x401d4a60 <CWINDOW_show_modal(void*, void*)>,
        object=0x81cc7c8, param=0xbffff4c0 "rubbish", type=4) at exec.c:592
    #6  0x0804f79f in EXEC_native () at exec.c:643
    #7  0x08050da3 in EXEC_loop () at exec_loop.c:1019
    #8  0x0804f418 in EXEC_function_real (keep_ret_value=0 '\0') at exec.c:505
    #9  0x08066ad6 in main (argc=1, argv=0xbffff814) at gbx.c:246
    #10 0x40061082 in __libc_start_main () from /lib/i686/libc.so.6
    (gdb)
    

Maintenant envoyez-moi le listing précédent pour que je puisse comprendre ce qui s'est arrivé. Notez que l’exemple ci-dessus n’est pas un plantage réel...

6. Signaler un plantage (une faute de segmentation, ou un signal #11) avec valgrind

Parfois, le programme se plante longtemps après la survenue d’un bogue. La rétro-copie de la pile n’est alors pas très utile.

Heureusement, valgrind est là !

valgrind vous permet d’/instrumenter/ n’importe quel programme. Il s'exécute dans un émulateur de CPU, et peut détecter n’importe quel bogue en mémoire dès qu’il se produit. Bien sûr, un programme tournant sous valgrind est un peu plus lent, mais bon !...

N’oubliez pas d’installer valgrind. Il n’est pas forcément installé par défaut sur votre système.

Pour faire tourner votre projet gambas sous valgrind, faites ainsi :

  • Ouvrez une console, et placez-vous dans le répertoire du projet qui plante.

    $ cd /chemin/vers/mon/ /projet/gambas
    

Si l’IDE se plante, allez dans les sources de l’IDE dans le répertoire app/src/gambas2 du paquet des sources. N’oubliez pas de compiler l’ IDE si nécessaire. Par exemple :

$ cd ~/gambas3-xxx/app/src/gambas3
$ gbc3 -agt

  • Puis lancez le projet sous valgrind ainsi :

    $ valgrind --tool=memcheck --num-callers=50 gbx3 > valgrind.out 2>&1
    

Tenez compte du fait que valgrind essaiera de poursuivre le programme, même s’il provoque une faute de segmentation, jusqu’à ce qu’il doive réellement s’arrêter . Vous devez donc arrêter le programme manuellement par CTRL+C si vous savez que le bogue a été atteint.

Une fois ceci réalisé, envoyez-moi le fichier valgrind.out.

Merci d’avance pour toute information que vous pouvez récolter !