Die Freigabe des Debuggers GDB 13.1 wird vorgestellt (die erste Version der Reihe 13.x, der Branch 13.0 wurde für die Entwicklung verwendet). GDB unterstützt die Fehlersuche auf Quellcode-Ebene für eine Vielzahl von Programmiersprachen (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust usw.) auf verschiedenen Hardware-Plattformen (i386, amd64, ARM, Power, Sparc, RISC-V usw.) und Software-Plattformen (GNU/Linux, *BSD, Unix, Windows, macOS).
Wesentliche Verbesserungen:
- Die Unterstützung für die Ausführung des Debuggers und GDBserver auf den Architekturen GNU/Linux/LoongArch und GNU/Linux/CSKY wurde hinzugefügt.
- Die Unterstützung für den Betrieb unter Windows im asynchronen Modus (async) wurde implementiert.
- Für die Plattform FreeBSD wurden auf den Architekturen ARM und AArch64 Unterstützung für TLS-Variablen (Thread Local Storage) hinzugefügt, und für die Architektur AArch64 wurde die Möglichkeit zur Nutzung von Hardware-Stopppunkten (Watchpoints) bereitgestellt.
- In der GNU/Linux-Umgebung auf LoongArch-Systemen wurde die Unterstützung für Fließkomma-Berechnungen hinzugefügt.
- Neue Befehle wie 'maintenance set ignore-prologue-end-flag|libopcodes-styling' und 'maintenance print frame-id' sowie Befehle zur Steuerung des Stils der disassemblierten Ausgabe (set style disassembler *) wurden implementiert.
- Die Befehle 'set print nibbles [on|off]' und 'show print nibbles' zur Steuerung der Anzeige von Binärwerten in vier Byte großen Gruppen wurden hinzugefügt.
- Verbesserungen im Python API wurden implementiert. Eine API zum Disassemblieren von Instruktionen wurde hinzugefügt, sowie der Typ gdb.BreakpointLocation und die Funktionen gdb.format_address, gdb.current_language und gdb.print_options.
- Die erste Version des GDB/MI-Programmierschnitts wurde als veraltet deklariert und wird in der GDB 14-Version entfernt.
- In ELF-Dateien wurde die Unterstützung für Debugging-Sektionen hinzugefügt, die mit dem zstd-Algorithmus komprimiert wurden.
- Neue integrierte Variablen wurden hinzugefügt: $_inferior_thread_count, $_hit_bpnum, $_hit_locno.
- Das Ausgabeformat der Befehle ‘disassemble /r’ und ‘record instruction-history /r’ wurde an die Ausgabe von objdump angepasst. Um das alte Format wiederherzustellen, wurde der Modus ‘/b’ hinzugefügt.
- Die Stilgebung des Quell- und Assemblercodes, der durch einen aktuellen Positionsindikator hervorgehoben wird, wurde im TUI (Text User Interface) deaktiviert.
- Die Möglichkeit wurde bereitgestellt, den Befehl ‘document’ zur Dokumentation benutzerdefinierter Befehle zu verwenden.
- Die Möglichkeit zur Erstellung von Dumps mit den Tags für den Speicher wurde hinzugefügt, die beim Einsatz des ARMv8.5 MTE-Mechanismus (MemTag, Memory Tagging Extension) verwendet werden. Dieser ermöglicht es, Tags mit jeder Speicherzuweisung zu verknüpfen und bei Zugriffen auf den Speicher eine Pointer-Überprüfung durchzuführen, die mit dem korrekten Tag verbunden sein muss.
- Die Unterstützung des Kompatibilitätsmodus mit DBX wurde eingestellt.
- Die Unterstützung für die Verwendung von Python 2 bei der Kompilierung wurde eingestellt.
- Die Befehle „set debug aix-solib on|off“, „show debug aix-solib“, „set debug solib-frv on|off“ und „show debug solib-frv“ wurden entfernt. Stattdessen sollten die Befehle „set/show debug solib“ verwendet werden.
Quelle: opennet.ru
