Fluxbox Wiki

0. Kompilieren mit den passenden Optionen

Mit Debug-Output wird man während des Kompilierens von Fluxbox eine Menge Nachrichten sehen, die nach stderr geschrieben werden. Sie zeigen an, was Fluxbox gerade im Detail tut. Das ist für einen Coredump nicht erforderlich, aber einige Leute (u.a. natürlich auch Entwickler) könnten es nützlich finden.

Wenn du ein Paket, z.B. über das Paket-Management deines OS, zum Installieren von Fluxbox benutzt hast, wirst du jetzt die Quelltexte brauchen. Um Fluxbox aus dem Quelltext zu bauen, folge diesem Guide (derzeit auf Englisch).

Nun gehe zu dem Verzeichnis, in dem die Fluxbox-Quelltexte liegen. Da ich SVN benutze, sieht's bei mir so aus:

cd ~/fluxbox

Da ich nun im richtigen Ordner bin, benutze ich den folgenden Befehl:

 CXXFLAGS="-g" LDFLAGS="-g" ./configure  --enable-debug --enable-imlib2 --enable-xinerama

Dadurch werden verschiedene Dinge aktiviert, z.B. PNG-Support durch imlib2, Debug Symbols, und xinerama für Dual-Head-Support. Der erste Teil des Befehls aktiviert Debug-Informationen für GDB, einen Debugger den sehr viele Entwickler benutzen. Sobald der Befehl ausgeführt worden ist, gib folgendes ein:

make clean && make

Ab jetzt wirst du root-Rechte brauchen, um Fluxbox zu installieren:

sudo make install

Jetzt darf man auf keinen Fall "strip" auf die gerade neu erstellen Executables anwenden, da damit alle nützlichen Informationen vom Coredump verloren gehen würden. Das neue Executable sollte um die 10 Mb groß sein, anstatt 1 Mb:

du -h $(which fluxbox)

1. Fast am Ziel

Bevor wir jetzt Fluxbox starten, müssen wir nur noch folgendes ausführen:

ulimit -c unlimited

Damit wird der Shell-Umgebung erlaubt, Coredumps zu erzeugen, ohne Begrenzung der Größe.

startfluxbox

Nun müsst ihr Fluxbox nur noch zum abstürzen bringen. Die core-Datei werdet ihr dann in eurem $HOME-Verzeichnis finden.

Der Bequemlichkeit halber, kann man Fluxbox auch auf einem zweiten X-Server starten:

startx /pfad/zu/fluxbox -- :1

Wenn Fluxbox nun abstürzt, werdet ihr auf eurem erstem X-Server landen, anstatt auf den Terminals.

2. Backtracing

Wenn du das hier liest, wurde dir wahrscheinlich gesagt, dass du einen Backtrace von einem Crash liefern sollst. Dafür muss der GNU Debugger (gdb) installiert sein:

gdb /pfad/zu/fluxbox /pfad/zu/core

Nun wirst du einigen Output sehen und anschließend einen Prompt, der so aussieht:

(gdb)

Gib 'bt' ein und du wirst deinen Backtrace bekommen. Danach kannst du gdb mit 'q' beenden.