This repository contains a .gdbinit file that contains helper functions to aid debugging of data structures. GDB will load this file - automatically if you have added the directory which contains the .gdbinit file to GDB's auto−load safe−path, and you start GDB from the directory which holds the .gdbinit file.
You can see the safe−path with show auto−load safe−path on a GDB prompt. You can configure it by setting it in ˜/.gdbinit with:
add−auto−load−safe−path /path/to/mongo−c−driver
If you haven't added the path to your auto−load safe−path, or start GDB in another directory, load the file with:
source path/to/mongo−c−driver/.gdbinit
The .gdbinit file defines the printbson function, which shows the contents of a bson_t * variable. If you have a local bson_t, then you must prefix the variable with a &.
An example GDB session looks like:
(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
}
The mongo−c−driver repository contains a script lldb_bson.py that can be imported into an LLDB sessions and allows rich inspection of BSON values.
NOTE:
The lldb_bson.py module requires an LLDB with Python 3.8 or newer.
To activate the script, import it from the LLDB command line:
(lldb) command script import /path/to/mongo−c−driver/lldb_bson.py
Upon success, the message lldb_bson is ready will be printed to the LLDB console.
The import of this script can be made automatic by adding the command to an .lldbinit file. For example: Create a file ˜/.lldbinit containing:
command script import /path/to/mongo−c−driver/lldb_bson.py
The docstring at the top of the lldb_bson.py file contains more information on the capabilities of the module.
To enable runtime debug assertions, configure with −DENABLE_DEBUG_ASSERTIONS=ON.
MongoDB, Inc
2017-present, MongoDB, Inc