Die Veröffentlichung des Debuggers GDB 18.1 (die erste Ausgabe der Serie 18.x, wĂ€hrend der Entwicklung wurde der Branch 18.0 verwendet) wurde vorgestellt. GDB unterstĂŒtzt das Debugging auf Quelltextebene fĂŒr eine Vielzahl von Programmiersprachen (C, C++, D, Go, Objective-C, Fortran, OpenCL C, Pascal, Rust, Assembler, Modula-2 und Ada) auf unterschiedlichen Hardwareplattformen (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch usw.) und Softwareplattformen (GNU/Linux, *BSD, Unix, Windows, macOS).
Die auffÀlligsten Verbesserungen:
- UnterstĂŒtzung der Plattformen GNU/Linux/MicroBlaze (microblazeel-*linux*) und AArch64 MinGW (aarch64-*-mingw*) wurde hinzugefĂŒgt. Die 32-Bit-Architektur s390 (s390-*) wurde als veraltet erklĂ€rt und ist zur Entfernung vorgesehen.
- FĂŒr die Windows-Plattform wurde die UnterstĂŒtzung des âNon-Stopâ-Modus (fĂŒr Windows 10 und neuer), die Sperrung desSchedulers durch den Befehl âset scheduler-locking onâ und die nativen TLS-Variablen (Thread Local Storage) implementiert. Bei der AusfĂŒhrung im Windows Terminal wird die UnterstĂŒtzung von 24-Bit-Farben, Emojis und der UTF-8-Codierung gewĂ€hrleistet. In CLI-, TUI-, MI- und DAP-Schnittstellen wurde die Normalisierung der Verwendung von SchrĂ€gstrichen in Dateipfaden aktiviert (es wird immer C:/proj/src/main.c anstelle von C:/proj/src\main.c verwendet).
- Um Probleme bei der Typensuche zu lösen, werden jetzt alle Debugging-Symbole von Typen in den Index .gdb_index aufgenommen.
- Im Befehl âinfo localsâ wurde die Anzeige der Annotation âshadowedâ fĂŒr externe Variablen implementiert, die von internen Variablen mit demselben Namen ĂŒberschrieben werden. Zur Steuerung der Ausgabe wurde die Einstellung âset print shadowed on|offâ hinzugefĂŒgt.
- In den Befehlen âset argsâ, ârunâ, âstartâ und âstartiâ wurde die Möglichkeit hinzugefĂŒgt, Argumente zu ĂŒbergeben, die Zeilenumbruchzeichen enthalten, die in AnfĂŒhrungszeichen gesetzt sind.
- In GDB und gdbserver wurde das Flag â--no-escape-argsâ hinzugefĂŒgt, um das Escaping von Sonderzeichen in den Argumenten zu deaktivieren.
- FĂŒr die Architektur AArch64 wurde die UnterstĂŒtzung des Registers FPMR (Floating Point Mode Register) implementiert.
- Erste UnterstĂŒtzung fĂŒr das Laden von Core-Dateien, die auf Systemen mit Intel AMX-UnterstĂŒtzung erstellt wurden, wurde hinzugefĂŒgt.
- UnterstĂŒtzung fĂŒr Trace-Events, die von der Bibliothek libipt 2.2 verarbeitet werden, wurde hinzugefĂŒgt.
- Beim Debugging ĂŒber den seriellen Port wurde die Möglichkeit hinzugefĂŒgt, nicht standardmĂ€Ăige Ăbertragungsraten anzugeben.
- In den Befehl help wurde der Modus âessentialâ integriert, der einen Ăberblick ĂŒber das minimale Set an Befehlen bietet, die ein neuer GDB-Benutzer benötigen könnte.
- Es wurden folgende Befehle hinzugefĂŒgt:
- set/show/ unset local-environment â das Pendant zu âset/show/ unset environmentâ, das die Umgebung von Unterprozessen beeinflusst, die von GDB selbst gestartet werden (z. B. ĂŒber shell oder pipe).
- save history, save skip, save user â speichert den Befehlshistorie, die skip-Operationen und benutzerdefinierte Befehle in einer Datei.
- info proc environ â zeigt die Umgebungsvariablen des Prozesses an.
- set/show progress-bars enabled â Steuerung der Anzeige von Fortschrittsbalken.
- delete skip, enable skip, disable skip â Aliase fĂŒr die Befehle skip delete/enable/disable.
- set/show debug gnu-ifunc und set/show debug ctf.
- Die UnterstĂŒtzung der ersten Version des DWP-Formats (DWARF Package File), der Debugging-Informationen von stabs und mdebug wurde entfernt. Die Möglichkeit, das Trace-Ergebnis im CTF-Format (Common Trace Format) zu speichern, wurde eingestellt.
- In der nĂ€chsten Version ist eine Trennung der Windows ABI Modi GNU (fĂŒr mit MinGW generierten Code) und MSVC (fĂŒr von MSVC- und Clang-Compilern kompilierten Code) geplant. Zur Auswahl der Windows ABI mĂŒssen in dem Befehl âset osabiâ die Werte âWindows-GNUâ und âWindows-MSVCâ angegeben werden. Der derzeit verwendete Wert Windows wĂ€hlt automatisch den erforderlichen Modus basierend auf dem Argument ââtargetâ (âtarget=x86_64-pc-windows-msvc oder âtarget=x86_64-w64-mingw32).
Quelle: opennet.ru
