GDB
Este repositorio contiene un .gdbinit Archivo que contiene funciones auxiliares para facilitar la depuración de estructuras de datos. GDB cargará este archivo. automáticamente si ha agregado el directorio que contiene el archivo .gdbinit a la ruta segura de carga automática .gdbinit de GDB e inicia GDB desde el directorio que contiene el archivo.
Puedes ver la ruta segura con show auto-load safe-path en un indicador de GDB. Puedes configurarla en ~/.gdbinit con:
add-auto-load-safe-path /path/to/mongo-c-driver
Si no ha agregado la ruta a su ruta segura de carga automática, o no ha iniciado GDB en otro directorio, cargue el archivo con:
source path/to/mongo-c-driver/.gdbinit
El archivo .gdbinit define la función printbson, que muestra el contenido de una variable bson_t *. Si tiene una variable bson_t local, debe anteponerla con un &.
Un ejemplo de sesión GDB se ve así:
(gdb) printbson bson ALLOC [0x555556cd7310 + 0] (len=475) { 'bool' : true, 'int32' : NumberInt("42"), 'int64' : NumberLong("3000000042"), 'string' : "Stŕìñg", 'objectId' : ObjectID("5A1442F3122D331C3C6757E1"), 'utcDateTime' : UTCDateTime(1511277299031), 'arrayOfInts' : [ '0' : NumberInt("1"), '1' : NumberInt("2") ], 'embeddedDocument' : { 'arrayOfStrings' : [ '0' : "one", '1' : "two" ], 'double' : 2.718280, 'notherDoc' : { 'true' : NumberInt("1"), 'false' : false } }, 'binary' : Binary("02", "3031343532333637"), 'regex' : Regex("@[a-z]+@", "im"), 'null' : null, 'js' : JavaScript("print foo"), 'jsws' : JavaScript("print foo") with scope: { 'f' : NumberInt("42"), 'a' : [ '0' : 3.141593, '1' : 2.718282 ] }, 'timestamp' : Timestamp(4294967295, 4294967295), 'double' : 3.141593 }
LLDB
El repositorio mongo-c-driver contiene un script lldb_bson.py que se puede importar a una sesión LLDB y permite una inspección detallada de los valores BSON.
Nota
El módulo lldb_bson.py requiere un LLDB con Python 3.8 o más reciente.
Para activar el script, impórtelo desde la línea de comandos LLDB:
(lldb) command script import /path/to/mongo-c-driver/lldb_bson.py
En caso de éxito, se imprimirá el mensaje lldb_bson is ready en la consola LLDB.
La importación de este script se puede automatizar añadiendo el comando a un archivo .lldbinit. Por ejemplo: Crear un archivo ~/.lldbinit que contenga:
command script import /path/to/mongo-c-driver/lldb_bson.py
La cadena de documentación en la parte superior del archivo lldb_bson.py contiene más información sobre las capacidades del módulo.
Afirmaciones de depuración
Para habilitar las afirmaciones de depuración en tiempo de ejecución, configure con -DENABLE_DEBUG_ASSERTIONS=ON.