GDB 14.1 ya fue liberado y estas son sus novedades
Hace poco se dio a conocer el lanzamiento de la nueva versión del depurador GDB 14.1, siendo esta la primera versión de la serie 14 y en la cual se han añadido una gran cantidad de funciones, atributos, clases y eventos nuevos, asi como también mejoras de soporte, correcciones de errores y más.
Para quienes desconocen de GDB, deben saber que este es un depurador del proyecto GNU, y este depurador permite «ver» lo que está pasando «dentro» otro programa mientras se ejecuta, o qué otro programa estaba haciendo en el momento en que hubo algún fallo.
GDB puede hacer cuatro tipos de cosas principales (además de otras cosas en apoyo de estas) para ayudar al usuario a detectar errores en la ejecución de programas:
- Iniciar un programa, especificando cualquier cosa que pueda afectar su comportamiento.
- Tiene la capacidad de detener el programa en condiciones específicas.
- Examinar lo que sucedió cuando el programa se detuvo.
- Cambiar cosas en el programa, para que el usuario pueda experimentar con corregir los efectos de un error y continuar aprendiendo sobre otro.
Esos programas podrían estar ejecutándose en la misma máquina que GDB (nativo), en otra máquina (remota) o en un simulador. GDB puede ejecutarse en la mayoría variantes populares de UNIX y Microsoft Windows, así como en macOS.
GDB admite la depuración a nivel de fuente para una amplia gama de lenguajes de programación, tales como: Ada, Assembly, C, C++, D, Fortran, Go, OpenCL, Objective-C, Modula-2, Pascal y Rust.
Principales novedades de GDB 14.1
En esta nueva versión que se presenta de GDB 14.1 es el soporte integrado inicial para el protocolo adaptador de depuración (DAP) desarrollado por Microsoft y este permite implementar un depurador genérico para que las herramientas de desarrollo puedan comunicarse con los diferentes depuradores a través de adaptadores de depuración, los cuales a su vez se pueden reutilizar en múltiples herramientas de desarrollo, lo básicamente se reduce al esfuerzo para admitir un nuevo depurador en diferentes herramientas.
Otro de los cambios que se destaca de esta nueva versión son las mejoras de soporte implementadas, tales como el soporte inicial para tipos de enteros mayores a 64 bits, el soporte para habilitar o deshabilitar funciones de objetivos remotos individuales, asi como también el soporte mejorado para Ada para los atributos The Ada 2022 ‘Enum_Rep and ‘Enum_Val.
Además de ello, GDB ahora reconoce la variable de entorno NO_COLOR y cuenta con compatibilidad mejorada con AArch64, pues se añadió el soporte inicial para la extensión SME y PYME2.
Por otra parte, se han eliminado funciones y configuraciones de GDB que ya son compatibles con el nuevo lanzamiento, por ejemplo GDB 14.1 ya no es compatible con AiX 4.x, 5.x y 6.x, se ha eliminado la compatibilidad con GDB/MI versión 1.
Se añadió la función $_shell» para ejecutar un comando en un shell y devolver el resultado, el comando «list» ahora acepta ‘.’ como argumento, para imprimir la ubicación del punto de ejecución en el marco de pila actual, se añadió» %V» al formato de salida para los comandos printf y dprintf, el comando printf ahora limita el tamaño de las cadenas obtenidas del inferior al valor del ‘max-value-size’ configuración y se añadieron nuevos comandos de depuración y mantenimiento.
En cuanto a las mejoras de soporte de Python, este fue el que más recibió y se destaca lo siguiente:
- Nuevas clases: gdb.Thread, gdb.unwinder.FrameId, gdb.ValuePrinter
- Nuevos atributos: gdb.Inferior.arguments, que mantiene la línea de comandos argumentos al inferior, si se conocen, gdb.Inferior.main_name, que contiene el nombre del ‘main’ del inferior, si se conoce, gdb.Breakpoint.Inferior, gdb.Progspace.symbol_file, gdb.Progspace.executable_filename
- Nuevas funciones: gdb.execute_mi(COMMAND, [ARG]…), gdb.block_signals()
- Nuevos métodos: gdb.Value ‘to_array’, gdb.Progspace ‘objfile_for_address’,´gdb.Frame.static_link, gdb.Inferior ‘clear_env’, ‘set_env’ y ‘unset_env’
- Nuevod eventos: gdb.ThreadExitedEvent, gdb.ExecutableChangedEvent gdb.NewProgspaceEventy gdb.FreeProgspaceEvent.
- La API Disassembler del módulo gdb.disassembler ha sido ampliada para incluir soporte de estilo
gdb.parse_and_eval - El atributo gdb.unwinder.Unwinder.enabled ahora sólo puede aceptar valores de tipo ‘bool’.
Ahora ya no es posible subclasificar el Tipo gdb.disassembler.DisassemblerResult.
Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.