Veröffentlichung des Debuggers GDB 17

Die Veröffentlichung des GDB-Debuggers 17.1 wurde vorgestellt (die erste Ausgabe der 17.x-Serie, die 17.0-Zweig wurde für die Entwicklung verwendet). GDB unterstützt die Debugging auf Quellcodeebene für eine breite Palette 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 x86-64-Systeme wurde Unterstützung für den Schattenstack (shadow stack) implementiert, der im Linux-Kernel 6.6 eingeführt wurde und es ermöglicht, viele Exploits zu blockieren, indem die Hardwarefähigkeiten von Intel-Prozessoren zum Schutz vor der Überschreibung der Rücksprungadresse aus einer Funktion im Falle eines Bufferüberlaufs im Stack genutzt werden. Der Schutzmechanismus besteht darin, dass nach der Übergabe der Kontrolle an eine Funktion die Rücksprungadressen nicht nur im normalen Stack, sondern auch in einem separaten, nicht direkt änderbaren 'Schatten'-Stack vom Prozessor gespeichert werden. Vor dem Verlassen der Funktion wird die Rücksprungadresse aus dem Schattenstack extrahiert und mit der Rücksprungadresse aus dem Hauptstack verglichen.
  • Die Möglichkeit zur Debugging von Linux-Programmen, die für die AArch64-Architektur kompiliert sind und die GCS-Erweiterung (Guarded Control Stack) verwenden, wurde hinzugefügt. GCS bietet Mittel zum hardwaregestützten Schutz von Rücksprungadressen aus Funktionen und zur Blockierung von Exploits, die Techniken des Rücksprung-orientierten Programmierens (ROP — Return-Oriented Programming, wobei der Exploit aus bereits vorhandenen Maschineninstruktionsfragmenten besteht, die mit einer Rücksprunginstruierung enden) nutzen.
  • Für Systeme mit der Architektur rv64gc wurde die vollständige Unterstützung für die Aufzeichnung des Programmablaufs zum Debuggen in umgekehrter Richtung und der Wiederholung von Codeabschnitten implementiert.
  • Das Kommando „info threads“ wurde um die Optionen „-stopped“ und „-running“ erweitert, um nur gestoppte oder nur ausgeführte Threads anzuzeigen.
  • Im Befehl „info sharedlibrary“ wurde auf Linux- und FreeBSD-Plattformen die Anzeige von Adressen für den gesamten Adressbereich, der der Shared Library zugewiesen ist, ermöglicht (zuvor wurden nur die Basisadresse und die Adressen für den .text-Bereich angezeigt).
  • Es wurde die Möglichkeit zur Nutzung von Statusaufnahmen (Checkpoint) in Linux bei gleichzeitiger Debugging mehrerer Prozesse bereitgestellt.
  • Die Unterstützung der Linker-Namespace wurde erweitert.
  • Zur Kennzeichnung von Fehlern und Warnungen wurden Emoji-Symbole verwendet.
  • Auf der Linux-Plattform wurde eine integrierte Möglichkeit zur Nutzung von lokalen Thread-Variablen (Thread-Local Storage, TLS) implementiert, die verwendet wird, wenn die Bibliothek libthread_db nicht verfügbar ist. Diese Funktion ist für die Architekturen x86_64, aarch64, ppc64, s390x und riscv bei der Erstellung mit GLIBC oder MUSL verfügbar.
  • Der Befehl „set riscv numeric-register-names“ wurde hinzugefügt, um RISC-V-Register mit ihren digitalen Bezeichnern anstelle von ABI-Namen anzuzeigen.
  • Verbesserungen im Python-API wurden vorgenommen. Es wurden neue Klassen gdb.Color und gdb.ParameterPrefix, das Attribut gdb.Value.is_unavailable und die Funktion gdb.warning() hinzugefügt. Die Unterstützung für ältere Python-Versionen wurde eingestellt — es wird nur Python 3.4 und neuer unterstützt.
  • Verbesserungen im Guile-API wurden vorgenommen. Der Typ „“ wurde hinzugefügt.
  • Die Möglichkeiten des DAP (Debugger Adapter Protocol) wurden erweitert: Unterstützung für die Anfragen „completions“ wurde implementiert und die Option „—binary-output“ zum Deaktivieren der Umwandlung von Zeilenumbruchzeichen auf Windows-Plattformen hinzugefügt.
  • Es wurden Variablen $_colorsupport (Liste der vom Terminal unterstützten Farbmodelle), $linker_namespace_count und $_linker_namespace (Liste der aktiven Namensräume des Linkers) hinzugefügt.
  • Die Optionen „—disable-gdb-compile“ zum Deaktivieren des Kompilierungssubsystems sowie „—disable-gdb-dwarf-support“ und „—disable-gdb-mdebug-support“ zum Deaktivieren von Debugging-Informationen in den Formaten DWARF und mdebug/ecoff wurden hinzugefügt.
  • In gdbserver wurde die Unterstützung von UST (statischen Tracepoints) eingestellt.

Quelle: opennet.ru

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster