Please read the user spec Debugging with GDB (Tenth Edition, for GDB version 13.0.50.20221115-git)chapter 23.3 Extending GDB using Python.
Please notice that: if the GDB version which you are using is old (maybe version 6 or older), maybe it does not support python. Update your GDB.
1. Check PYTHONDIR
(gdb) python
> print(gdb.PYTHONDIR)
> end
/usr/bin/share/gdb/python
By the command print(gdb.PYTHONDIR) , we can get the directory of python that GDB are using.
2. Config ~/.gdbinit
python
import sys
sys.path.insert(0, "/usr/share/gcc-8/python")
from libstdcxx.v6 import register_libstdcxx_printers
register_libstdcxx_printers(None)
end
Insert python path and register the pretty printers for printing c++ containers.
3. Example
(gdb) python
>print(gdb.parse_and_eval("1+1"))
>end
2
You can parse and evalute the value of expression by using command gdb.parse_and_eval("expression")). The "expression" can be a pointer or an object in c++ context, and python wil evalute the value automatically. The feature is very useful, and you can wrap a function in ~/.gdbinit in order to impove debugging experience.
At the end, Suggest you oftern read GDB user spec.