Die Version 16.1 des Debuggers GDB wurde vorgestellt (erste Ausgabe der Serie 16.x, der Branch 16.0 wurde zur Entwicklung verwendet). GDB unterstützt das Debuggen auf Quellcodeebene für eine Vielzahl von Programmiersprachen (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust usw.) auf verschiedenen Hardware- (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch usw.) und Softwareplattformen (GNU/Linux, *BSD, Unix, Windows, macOS).
Die auffälligsten Verbesserungen:
- Für Linux-Umgebungen auf Systemen mit der Architektur LoongArch wurde die Unterstützung für Aufzeichnung und Wiederholung (record/replay) implementiert.
- Für taggierte Zeiger, bei denen einige Bits zur Speicherung zusätzlicher Daten verwendet werden, wurde die Unterstützung für Haltepunkte implementiert, die bei Datenänderungen auslösen (Watchpoint).
- Auf Systemen mit der Architektur AArch64 wurde die Unterstützung für das Debuggen der Schutzmechanismen MTE (Memory Tagging Extension) implementiert. MTE ermöglicht es, Tags bestimmten Bereichen im Speicher zuzuordnen und die Korrektheit der Verwendung von Zeigern zu überprüfen, um die Ausnutzung von Schwachstellen, die durch inkorrekte Speicherverwendung verursacht werden, zu verhindern.
- Ein Bash-Skript gstack wurde hinzugefügt, das GDB zur Ausgabe von Stack-Traces von laufenden Prozessen verwendet.
- Für Haltepunkte im Zustand des Wartens (pending) werden die Schlüsselwörter 'thread' und 'task' jetzt beim Erstellen des Haltepunkts und nicht erst nach dem Verlassen des Wartens analysiert.
- Die Verknüpfung von Haltepunkten, die an Threads gebunden sind, erfolgt jetzt nur in dem Bereich des Programms, in dem der erforderliche Thread ausgeführt wird.
- Die Möglichkeiten der Nachverfolgung auf Intel-Prozessoren wurden erweitert: Beim schrittweisen Debuggen sowie in den Befehlen 'record instruction-history' und 'record function-call-history' werden asynchrone Ereignisse und Daten ausgegeben, die bei der Verwendung des ptwrite-Befehls gespeichert werden.
- Im Python-API wurden hinzugefügt: das Modul gdb.missing_objfile, das Ereignis gdb.tui_enabled, das Attribut gdb.Symbol.is_artificial und die Funktion gdb.record.clear.
- Die Möglichkeiten des DAP-Protokolls (Debugger Adapter Protocol), die die Verarbeitung von Anfragen zu 'scopes', 'launch' und 'attach' betreffen, wurden erweitert.
- Im Protokoll für die Fern-Debugging wurde die Unterstützung für die Pakete 'vFile:stat' und 'x addr,length' hinzugefügt.
- Die Unterstützung für QNX Neutrino, Nios II und Intel MPX wurde eingestellt.
Quelle: opennet.ru
