Nächste: , Nach oben: Dateien zur Fehlersuche installieren   [Inhalt][Index]


17.1 Fehlersuchinformationen abtrennen

Das Problem bei Informationen zur Fehlersuche ist, dass dadurch einiges an Plattenplatz verbraucht wird. Zum Beispiel steuern die Informationen zur Fehlersuche in der GNU-C-Bibliothek mehr als 60 MiB bei. Als ein Nutzer ist es deswegen in der Regel nicht möglich, sämtliche Fehlersuchinformationen für alle installierten Programme zu speichern. Andererseits sollten Platzeinsparnisse nicht auf Kosten der Fehlersuche gehen – besonders im GNU-System, wo es Nutzern leicht fallen sollte, ihre Freiheit, wie sie ihre Rechner benutzen, auszuüben (siehe GNU-Distribution).

Glücklicherweise gibt es in den GNU Binary Utilities (Binutils) und GDB einen Mechanismus, mit dem Nutzer das Beste aus beiden Welten bekommen: Informationen zur Fehlersuche können von den davon beschriebenen Binärdateien losgelöst und in separaten Dateien gespeichert werden. GDB kann dann Fehlersuchinformationen laden, wenn diese Dateien verfügbar sind (siehe Separate Debug Files in Debugging with GDB).

Die GNU-Distribution nutzt diesen Mechanismus aus, indem sie Informationen zur Fehlersuche im Unterverzeichnis lib/debug einer separaten Paketausgabe speichert, die den fantasielosen Namen debug trägt. Mit dem folgenden Befehl können Sie zum Beispiel Informationen zur Fehlersuche für die GNU-C-Bibliothek und für GNU Guile installieren:

guix install glibc:debug guile:debug

GDB muss dann angewiesen werden, im Profil des Nutzers nach Informationen zur Fehlersuche zu schauen, indem Sie die Variable debug-file-directory entsprechend setzen (vielleicht möchsten Sie die Variable in der Datei ~/.gdbinit festlegen, siehe Startup in Debugging with GDB):

(gdb) set debug-file-directory ~/.guix-profile/lib/debug

Von da an wird GDB auch aus den .debug-Dateien unter ~/.guix-profile/lib/debug auslesbare Informationen zur Fehlersuche verwenden.

Im Folgenden sehen Sie ein alternatives GDB-Skript, um mit anderen Profilen zu arbeiten. Es macht Gebrauch von der optionalen Guile-Einbindung in GDB. Dieses Schnipsel wird auf Guix System nach Voreinstellung in der ~/.gdbinit-Datei zur Verfügung gestellt.

guile
(use-modules (gdb))
(execute (string-append "set debug-file-directory "
                        (or (getenv "GDB_DEBUG_FILE_DIRECTORY")
                            "~/.guix-profile/lib/debug")))
end

Des Weiteren werden Sie höchstwahrscheinlich wollen, dass GDB den Quellcode, der auf Fehler untersucht wird, anzeigen kann. Dazu müssen sie den Quellcodes des Pakets, für das Sie sich interessieren (laden Sie ihn mit guix build --source herunter; siehe Aufruf von guix build), und dann weisen Sie GDB an, in dem Verzeichnis zu suchen, indem Sie den directory-Befehl benutzen (siehe directory in Debugging with GDB).

Der Mechanismus mit der debug-Ausgabe wird in Guix als Teil des gnu-build-system implementiert (siehe Erstellungssysteme). Zurzeit ist sie optional – nur für Pakete, in deren Definition ausdrücklich eine debug-Ausgabe deklariert wurde, sind Informationen zur Fehlersuche verfügbar. Um zu überprüfen, ob Pakete eine debug-Ausgabe mit Informationen zur Fehlersuche haben, benutzen Sie guix package --list-available (siehe guix package aufrufen).

Lesen Sie weiter, um zu erfahren, wie Sie mit Paketen ohne eine debug-Ausgabe umgehen können.


Nächste: Fehlersuchinformationen erneuern, Nach oben: Dateien zur Fehlersuche installieren   [Inhalt][Index]