Ajudas para depuração
Nesta página
GDB
Este repositório contém um arquivo .gdbinit
que contém funções assistente para ajudar na depuração de estruturas de dados. O GDB carregará este arquivo automaticamente se você adicionou o diretório que contém o .gdbinit
arquivo ao caminho seguro de carregamento automático do GDB , e você inicia GDB a partir do diretório que contém o .gdbinit
arquivo .
Você pode ver o caminho seguro com show auto-load safe-path
em um prompt do GDB. Você pode configurá-lo definindo-o em ~/.gdbinit
com:
add-auto-load-safe-path /path/to/mongo-c-driver
Se você não tiver adicionado o caminho ao caminho seguro de carregamento automático ou iniciar o GDB em outro diretório, carregue o arquivo com:
source path/to/mongo-c-driver/.gdbinit
O arquivo .gdbinit
define a função printbson
, que mostra o conteúdo de uma variável bson_t *
. Se você tiver um bson_t
local , deverá prefixar a variável com um &
.
Um exemplo de sessão GDB se parece com:
(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
O repositório mongo-c-driver contém um script lldb_bson.py
que pode ser importado para uma sessão LLDB e permite uma inspeção detalhada dos valores BSON.
Observação
O módulo lldb_bson.py
exige um LLDB com Python 3.8 ou mais recente.
Para ativar o script, importe-o da linha de comando LLDB:
(lldb) command script import /path/to/mongo-c-driver/lldb_bson.py
Após o sucesso, a mensagem lldb_bson is ready
será impressa no console LLDB.
A importação deste script pode ser tornada automática adicionando o comando a um arquivo .lldbinit
. Por exemplo: crie um arquivo ~/.lldbinit
contendo:
command script import /path/to/mongo-c-driver/lldb_bson.py
A docstring na parte superior do arquivo lldb_bson.py
contém mais informações sobre os recursos do módulo.
Depurar afirmações
Para habilitar asserções de depuração de tempo de execução, configure com -DENABLE_DEBUG_ASSERTIONS=ON
.