Ein Problem, einen Bug oder Absturz melden

Wenn du einen akkuraten Fehlerbericht ablieferst, indem alles steht, um den Bug zu reproduzieren, dann hast du normalerweise bereits die Hälfte der Arbeit erledigt.

SEI ALSO AKKURAT UND AUSSAGEKRÄFTIG!

1. Der Bug-Tracker

Der Gambas Bug-Tracker wird z.Z. auf http://code.google.com betrieben. Bitte reiche deine Fehlerberichte ab sofort dort ein!

Bitte vergiss nicht:
  • deine Konfiguration anzugeben: dein Prozessor, deine Distribution (Mandriva, SuSE, Debian, etc.) mit Versionsnummer, deine Kernel-Version und alles weitere, das du für nützlich hälst.

  • GIB AN, WELCHE GAMBAS-VERSION DU BENUTZT.

  • für Projekte mit graphischer Oberfläche, gib dein Desktop-Environment an und ob du die gb.qt4- oder die gb.gtk-Komponente verwendest.

  • Versuch, den Fehler in ein kleines Gambas-Projekt zu isolieren und erkläre, wie man ihn reproduziert.

Du bekommst alle notwendigen Informationen vom "Systeminformationen"-Menüeintrag in der IDE:

2. Die Mailingliste

Wenn du ein Problem nicht lösen kannst, versuche zuerst in der Mailingliste nachzufragen. Vielleicht kann dir jemand helfen - wer weiß? Aber bitte:
  • gib deine Konfiguration an: dein Prozessor, deine Distribution (Mandriva, SuSE, Debian, etc.) mit Versionsnummer, deine Kernel-Version und alles weitere, das du für nützlich hälst.

  • GIB AN, WELCHE GAMBAS-VERSION DU BENUTZT.

  • für Projekte mit graphischer Oberfläche, gib dein Desktop-Environment an und ob du die gb.qt4- oder die gb.gtk-Komponente verwendest.

  • Versuch, den Fehler in ein kleines Gambas-Projekt zu isolieren und erkläre, wie man ihn reproduziert.

3. Einen Kompilierungsfehler melden

Wenn du Gambas nicht erfolgreich kompilieren und installieren kannst, schicke bitte die Ausgaben der vier Kommandos ./reconf-all, ./configure, make, and make install mit dem Fehlerbericht mit.

Um die Ausgaben zu erhalten, schreib das folgende in ein Terminal:

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

und sende die Dateien "output.txt" und "install.txt".

Wenn ./reconf-all nicht das Problem ist, kannst du dieses Kommando auslassen und nur die Ausgabe der anderen drei Kommandos senden.

Kompilierungsprobleme müssen in der Mailingliste berichtet werden, nicht im Bug-Tracker!

4. Einen Fehler/Bug melden

Als letzten Ausweg, und wenn du fast sicher bist, dass es sich um einen hässlichen Bug handelt, kannst du mir eine E-Mail schreiben, aber *BITTE:
  • Bring das Wort "Bug" irgendwo im Betreff unter.

  • gib deine Konfiguration an: dein Prozessor, deine Distribution (Mandriva, SuSE, Debian, etc.) mit Versionsnummer, deine Kernel-Version und alles weitere, das du für nützlich hälst.

  • GIB AN, WELCHE GAMBAS-VERSION DU BENUTZT.

  • für Projekte mit graphischer Oberfläche, gib dein Desktop-Environment an und ob du die gb.qt4- oder die gb.gtk-Komponente verwendest.

  • Wenn es sich um ein Problem während der Kompilierung oder Ausführung eines Programmes handelt, SENDE DEIN Gambas-PROJEKT, damit ich mich damit beschäftigen kann.

  • Wenn du mir das Projekt nicht schicken willst, versuch, den Fehler in ein kleines Gambas-Projekt zu isolieren.

5. Einen Absturz (Segmentation fault, oder Signal #11) melden

Wenn Gambas abstürzt, kannst du das Programm verfolgen und mir sagen, wo genau es abstürzt. Das ist sehr nützlich für mich. Wenn du nicht weißt, wie man das tut, dann lies das folgende sorgfältig:

Du musst Gambas mit Debugging-Informationen kompiliert haben, was normalerweise der Fall ist.

  • Öffne ein Terminal und wechsle in das Verzeichnis des Projektes, welches abstürzt.

    $ cd /path/to/my/gambas/project

Wenn die IDE abstürzt, dann geh in das Quelltextverzeichnis der IDE unter app/src/gambas3 im Gambas-Quelltext. Vergiss nicht, die IDE zu kompilieren. Z.B.:

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

  • Starte den GNU-Debugger.

    $ gdb gbx3 GNU gdb (GDB) 7.2-ubuntu Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later 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: ... Reading symbols from /usr/bin/gbx3...done. (gdb)

  • Führe das Programm aus, bis es abstürzt.

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

  • Dann führe das "bt"-Kommando aus, um den Inhalt des Stacks anzuzeigen.

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

Nun sende mir die gerade gezeigte Liste, damit ich verstehen kann, was passiert ist. NB: das obige Beispiel ist kein richtiger Absturz...

6. Einen Absturz (Segmentation fault, oder Signal #11) melden, mit valgrind

Manchmal stürzt ein Programm ab, lange nachdem der Fehler auftrat. Dann ist der Stack-Backtrace nicht nützlich.

Glücklicherweise ist valgrind da!

valgrind erlaubt es, jedes Programm zu instrumentieren. Es lässt das Programm in einem CPU-Emulator laufen und kann so Speicherfehler erkennen, sobald sie auftreten. Natürlich wird ein Programm, welches innerhalb von valgrind läuft, wesentlich langsamer ausgeführt, aber hey!...

Vergiss nicht valgrind zu installieren. Es ist möglicherweise nicht standardmäßig auf deinem System vorhanden.

Du musst Gambas mit Debugging-Informationen kompiliert haben, was normalerweise der Fall ist.

Um dein Gambas-Projekt unter valgrind auszuführen:

  • Öffne ein Terminal und geh in das Verzeichnis des den Absturz verursachenden Projekts.

    $ cd /path/to/my/gambas/project

Wenn die IDE abstürzt, dann geh in das Quelltextverzeichnis der IDE unter app/src/gambas3 im Gambas-Quelltext. Vergiss nicht, die IDE zu kompilieren. Z.B.:

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

  • Führe dann das Projekt auf diese Weise unter valgrind aus:

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

NB, dass valgrind versuchen wird, das Programm weiter auszuführen, auch wenn ein Segfault auftritt, bis es wirklich anhalten muss. Du musst das Programm ggf. manuell über CTRL+C anhalten, wenn du weißt, dass der Bug erreicht wurde.

Sobald das getan wurde, schick mir die Datei valgrind.out.

Danke im Voraus für alle Informationen, die du sammeln kannst!