Segnalare un problema, un bug o un crash

Effettuando un accurato rapporto e fornendo tutto il necessario per riprodurre il bug, di solito è come aver fatto metà del lavoro di correzione dei bug.

QUINDI INFORMA CON ACURATEZZA!

1. Il Bug Tracker

Il bug tracker di Gambas è attualmente ospitato su http://gambaswiki.org/bugtracker. Per favore segnala i tuoi bug lì. Nota che devi registrarti con un indirizzo e-mail valido per poter inviare segnalazioni di bug.

Ma per favore non dimenticarti di:
  • Fornire dettagli sulla tua configurazione: il tuo processore, la tua distribuzione (Mandriva, SuSE, Debian, ecc.) Con il numero di versione, la versione del kernel e tutto ciò che trovi utile.

  • DIRE QUALE VERSIONE DI Gambas STAI UTILIZZANDO .

  • Per i progetti con una GUI, indicare qual è il tuo ambiente desktop e quale componente grafico si sta utilizzando.

  • Cercare di isolare il problema in un piccolo progetto Gambas e spiegare come riprodurlo.

È possibile raccogliere tutte le informazioni necessarie dalla voce di menu Informazioni di sistema nell'ambiente di sviluppo:

2. La Mailing list

Se non riesci a risolvere il tuo problema, prima prova a chiedere su mailing list. Forse qualcuno potrebbe aiutarti, chi lo sa? Ma per favore:
  • Fornisci dettagli sulla tua configurazione: il tuo processore, la tua distribuzione (Mandriva, SuSE, Debian, ecc.) Con il numero di versione, la versione del kernel e tutto ciò che trovi utile.

  • DI QUALE VERSIONE DI Gambas STAI UTILIZZANDO.

  • Per i progetti con una GUI, indica qual è il tuo ambiente desktop e quale componente grafico stai utilizzando.

  • Cerca di isolare il problema in un piccolo progetto Gambas e spiega come riprodurlo.

3. Segnalazione di un problema di compilazione di Gambas

Se non è possibile compilare e installare Gambas con successo, fornisci l'output dei quattro comandi: ./reconf-all, ./configure, make e make install.

Per farlo, digita i seguenti comandi in un terminale:

$ cd /gambas/source/directory
$ (./reconf-all && ./configure -C && make clean && make) > output.txt 2>&1
$ su (o sudo)
...
# make install > install.txt 2>&1

e invia i file output.txt e install.txt.

Se ./reconf-all non è il problema, puoi saltarlo e inviare semplicemente l'output degli altri tre comandi.

I problemi di compilazione devono essere segnalati sulla mailing-list, non sul bug tracker!

4. Segnalazione di un bug

Come ultima risorsa, e se sei quasi sicuro che si tratti di un terribile bug, puoi inviarmi un'e-mail, ma PER FAVORE:
  • Metti la parola "Bug" da qualche parte nell'oggetto.

  • Fornisci dettagli sulla tua configurazione: il tuo processore, la tua distribuzione (Mandriva, SuSE, Debian, ecc.) Con il numero di versione, la versione del kernel e tutto ciò che trovi utile.

  • DI QUALE VERSIONE DI Gambas STAI UTILIZZANDO.

  • Per i progetti con una GUI, indica qual è il tuo ambiente desktop e quale componente grafico stai utilizzando.

  • Se è un problema durante la compilazione o l'esecuzione di un programma, INVIA IL TUO PROGETTO Gambas in modo che me ne occupo io.

  • Se non vuoi inviare il tuo progetto, prova a isolare il problema in un piccolo progetto.

5. Segnalazione di un crash (un errore di segmentazione o un segnale #11)

Se Gambas si blocca, puoi rintracciarlo e dirmi dove si è verificato esattamente. È molto utile per me. Se non sai come farlo, leggi attentamente quanto segue:

Devi compilare Gambas con le informazioni di debug abilitate, che normalmente sono l'impostazione predefinita.

  • Apri un terminale e vai alla directory del progetto che va in crash.

    $ cd /path/del/mio/progetto/gambas
    

Se è l'IDE che si arresta in modo anomalo, vai ai sorgenti IDE nella directory app/src/gambas3 del pacchetto sorgente. Non dimenticare di compilare l'IDE. Per esempio:

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

  • Avvia il debugger 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)
    

  • Esegui il programma finché non si blocca.

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

  • Quindi digita il comando 'bt' per ottenere il contenuto dello stack.

    (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)
    

Ora inviami l'elenco precedente in modo che io possa capire cosa è successo. Nota che l'esempio precedente non è stato un vero incidente ...

6. Segnalazione di un crash (un errore di segmentazione o un segnale #11) con valgrind

A volte, il programma si arresta in modo anomalo molto tempo dopo che il bug è stato rilevato. Quindi il backtrace dello stack non è utile.

Si spera che valgrind, lo sia!

valgrind ti permette di indagare qualsiasi programma. Lo esegue all'interno di un emulatore di CPU e può rilevare qualsiasi bug di memoria non appena viene rilevato. Ovviamente, un programma eseguito all'interno di valgrind è molto più lento, ma cavolo!...

Non dimenticare di installare valgrind. Potrebbe non essere installato di default sul tuo sistema.

Devi compilare Gambas con le informazioni di debug abilitate, che normalmente sono l'impostazione predefinita.

Per eseguire il tuo progetto gambas in valgrind, procedi come segue:

  • Apri un terminale e vai alla directory del progetto che va in crash.

    $ cd /path/del/mio/progetto/gambas
    

Se è l'IDE che si arresta in modo anomalo, vai ai sorgenti IDE nella directory app/src/gambas3 del pacchetto sorgente. Non dimenticare di compilare l'IDE. Per esempio:

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

  • Quindi esegui il progetto all'interno di valgrind in questo modo:

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

Attenzione che valgrind proverà a continuare il programma, anche se va in errore, fino a quando non si sarà fermato. Quindi potresti dover interrompere il programma manualmente premendo CTRL+C se sai che il bug è già stato raggiunto.

Una volta fatto, inviami il file valgrind.out.

Grazie in anticipo per tutte le informazioni che puoi raccogliere!