È stata rilasciata la versione del debugger GDB 16.1 (prima edizione della serie 16.x, il ramo 16.0 è stato utilizzato per lo sviluppo). GDB supporta il debugging a livello di 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 software (GNU/Linux, *BSD, Unix, Windows, macOS).
The most noticeable improvements:
- Per gli ambienti Linux su sistemi con architettura LoongArch è stata implementata la registrazione e la ripetizione (record/replay).
- Per i puntatori taggati, una parte dei bit utilizzati per memorizzare dati aggiuntivi, è stata implementata la supporto per i punti di interruzione che scattano quando i dati cambiano (watchpoint).
- Sui sistemi con architettura AArch64 è stata implementata la supporto per il debug del meccanismo di protezione MTE (Memory Tagging Extension). MTE consente di associare tag a aree di memoria e organizzare la verifica della correttezza dell'uso dei puntatori per bloccare l'exploitation delle vulnerabilità causate da un errato utilizzo della memoria.
- È stato aggiunto lo script bash gstack, che utilizza GDB per visualizzare le tracce dello stack dei processi in esecuzione.
- Per i punti di interruzione in stato di attesa (pending), le parole chiave ‘thread’ e ‘task’ vengono ora elaborate durante la creazione del punto di interruzione, e non dopo l'uscita dallo stato di attesa.
- È stata garantita la sostituzione dei punti di interruzione associati ai thread solo nell'area del programma in cui viene eseguito il thread necessario.
- Ampliate le possibilità di tracciamento sui processori Intel: durante il debug a passo, nonché nei comandi «record instruction-history» e «record function-call-history», è stata implementata l'uscita di eventi asincroni e dati memorizzati all'uso dell'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 funzionalità del protocollo DAP (Debugger Adapter Protocol) relative alla gestione delle richieste «scopes», «launch» e «attach».
- Nel protocollo di debug remoto è stato aggiunto il 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
