add-auto-load-safe-path /
 
set pagination off
set print object on
 
set print static-members off
set print pretty on
#set print elements 0

# include venv in the Python path
python
import os, subprocess, sys
try:
    gdb_python_version = sys.version.split()[0]
    shell_python_version = subprocess.check_output('python -c "import sys;print(sys.version.split()[0])"', shell=True).decode("utf-8").strip()
    if gdb_python_version == shell_python_version:
        # Execute a Python using the user's shell and pull out the sys.path (for site-packages)
        shell_paths = subprocess.check_output('python -c "import os,sys;print(os.linesep.join(sys.path).strip())"', shell=True).decode("utf-8").split()
        # Extend GDB's Python's search path
        sys.path.extend(path for path in shell_paths if not path in sys.path)
        print("Included venv Python path")
    else:
        print("Failed to include venv Python path: Python version mismatch (shell {}, gdb {})".format(shell_python_version, gdb_python_version))
except Exception as e:
    print("Failed to include venv Python path: " + str(e))
end

# register boost pretty printers
python
import sys, pathlib
try:
    sys.path.insert(1, os.path.join(pathlib.Path.home(), 'Boost-Pretty-Printer'))
    import boost
    boost.register_printers(boost_version=(1,60,0))
    print("Loaded boost pretty printers")
except Exception as e:
    print("Failed to load the boost pretty printers: " + str(e))
end