È stato rilasciato il debugger GDB 16.1 (il primo rilascio della serie 16.x, la branch 16.0 è stata utilizzata per lo sviluppo). GDB supporta il debugging a livello di codice sorgente per un ampio spettro di linguaggi di programmazione (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust, ecc.) su diverse piattaforme hardware (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch, ecc.) e piattaforme software (GNU/Linux, *BSD, Unix, Windows, macOS).
I miglioramenti più significativi:
- Per gli ambienti Linux su sistemi con architettura LoongArch è stata implementata la registrazione e la ripetizione (record/replay).
- Per i puntatori taggati, parte dei bit viene utilizzata per memorizzare dati aggiuntivi; è stata implementata la supporto per breakpoint che scattano al cambiamento dei dati (watchpoint).
- Nei sistemi con architettura AArch64 è stato implementato il supporto per il debugging del meccanismo di protezione MTE (Memory Tagging Extension). MTE consente di associare tag a aree di memoria e organizzare un controllo della correttezza dell'uso dei puntatori per bloccare lo sfruttamento delle vulnerabilità causate da un uso inadeguato della memoria.
- È stato aggiunto lo script bash gstack, che utilizza GDB per produrre tracciamenti dello stack dei processi in esecuzione.
- Per i breakpoint in stato di attesa (pending) le parole chiave 'thread' e 'task' sono ora analizzate durante la creazione del breakpoint e non dopo il termine dello stato di attesa.
- È garantito che i breakpoint associati ai thread vengano attivati solo nell'area del programma in cui viene eseguito il thread necessario.
- Le capacità di tracciamento sui processori Intel sono state ampliate: durante il debugging passo dopo passo, così come nei comandi 'record instruction-history' e 'record function-call-history', è stato implementato l'output di eventi asincroni e dati memorizzati utilizzando l'istruzione ptwrite.
- Nell'API Python sono stati aggiunti: il modulo gdb.missing_objfile, l'evento gdb.tui_enabled, l'attributo gdb.Symbol.is_artificial e la funzione gdb.record.clear.
- Sono state ampliate le capacità del protocollo DAP (Debugger Adapter Protocol) relative alla gestione delle richieste 'scopes', 'launch' e 'attach'.
- Nel protocollo di debugging remoto è stata aggiunta la supporto per i pacchetti 'vFile:stat' e 'x addr,length'.
- È stata interrotta la supporto per QNX Neutrino, Nios II e Intel MPX.
Fonte: opennet.ru
