GDB 18.1 bringt Non-Stop-Debugging unter Windows und streicht stabs und CTF
Version 18.1 des GNU-Debuggers GDB hat Andrew Burgess auf der Liste gdb-announce angekündigt. Den größten Block an Änderungen bekommt Windows. Das native Windows-Target unterstützt jetzt den Non-Stop-Modus ab Windows 10, set scheduler-locking on funktioniert dort endlich, native Thread-Local-Storage-Variablen werden unterstützt, und im Windows Terminal kann GDB 24-Bit-Farben und UTF-8-Ausgabe nutzen, wenn die Codepage der Konsole 65001 ist. Dateinamen erscheinen nun durchgängig mit Schrägstrichen statt mit gemischten Trennzeichen.
Für den Alltag gibt es einige kleine, willkommene Befehle. save history, save skip und save user schreiben die Befehlshistorie, die aktuellen Skips und benutzerdefinierte Befehle in eine Datei. Die neue Befehlsfamilie local-environment steuert die Umgebung von Prozessen, die GDB selbst über shell und pipe startet, getrennt von der Umgebung des untersuchten Programms. info locals markiert jetzt Variablen, die eine andere verdecken oder verdeckt werden, und eine neue Hilfeklasse "essential" listet einen Grundbestand an Befehlen für Einsteiger. Argumente des Zielprozesses dürfen nun Zeilenumbrüche in Anführungszeichen enthalten, und die Option --no-escape-args übergibt Argumente, ohne Shell-Sonderzeichen zu maskieren.
Die Python-API erhält die Klasse gdb.Corefile für geladene Core-Dateien samt ihrer eingeblendeten Dateien, neue Ereignisregister für Kontext- und Core-Datei-Wechsel und Hervorhebung in der Disassemblierung.

Was das bedeutet
Die Streichungen verdienen so viel Aufmerksamkeit wie die Neuerungen. GDB 18.1 entfernt die Debugformate stabs und mdebug sowie das Binärformat dbx, streicht die Ausgabe im Common Trace Format vollständig, liest keine .gdb_index-Abschnitte vor Version 7 und keine DWARF-Package-Dateien der Version 1 mehr und ändert das Format gespeicherter Ausführungsaufzeichnungen, sodass ältere nicht mehr laden. AIX 7.1 wird nicht mehr unterstützt. Wer alte Toolchains, archivierte Traces oder langlebige Build-Artefakte debuggt, sollte vor dem Update prüfen - genau solche Dateien liegen unberührt, bis sie in einem Vorfall gebraucht werden.
Die Änderung an .gdb_index kommt mit einer praktischen Anweisung: GDB nimmt jetzt alle Typsymbole in den Index auf, womit Fälle behoben sind, in denen Typen nicht gefunden wurden, und laut Release Notes sollten bestehende Indizes neu erzeugt werden. Wer Indizes in Release-Artefakte einbaut, bekommt die Korrektur erst nach dem Neubau.
Für Windows-Entwickler ist der Non-Stop-Modus die Hauptsache. Er lässt manche Threads weiterlaufen, während andere angehalten sind - so werden Server mit vielen Threads unter Linux üblicherweise debuggt. Bisher mussten Windows-Nutzer bei jedem Haltepunkt den ganzen Prozess anhalten.