GDB with Python
Introduction
The NuttX kernel can be effectively debugged using GDB’s Python extension.
Commonly used classes and utilities are implemented in the nuttx/tools/gdb/nuttxgdb
directory.
Users can also create custom Python scripts tailored to their debugging needs to analyze and troubleshoot the NuttX kernel more efficiently.
Usage
Compile NuttX with CONFIG_DEBUG_SYMBOLS=y enabled and change
CONFIG_DEBUG_SYMBOLS_LEVEL
to-g3
.Use GDB to debug the NuttX ELF binary (on a real device, a simulator, or with a coredump).
Add the following argument to the GDB command line:
-ix="nuttx/tools/pynuttx/gdbinit.py"
GDB will automatically load the Python script, enabling the use of custom commands.
How to write a GDB python script
Here is an article that introduces the fundamental principles of Python in GDB. Read it to gain a basic understanding. Automate Debugging with GDB Python API.
For more documentation on gdb python, please refer to the official documentation of GDB. GDB Python API.
Requirements
To use GDB with Python, the following requirements must be met:
Use GDB compiled with Python support, Python 3.8 or later
Install required Python packages:
pip install -r tools/pynuttx/requirements.txt
Compile NuttX with debug level 3:
CONFIG_DEBUG_SYMBOLS_LEVEL="-g3"
Warning
The GDB Python API is not available in all versions of GDB. Make sure to use a version that supports Python.
Warning
NuttX must be compile with CONFIG_DEBUG_SYMBOLS=y
and CONFIG_DEBUG_SYMBOLS_LEVEL="-g3"
to use GDB with Python.
GDB Plugin Commands