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

  1. Compile NuttX with CONFIG_DEBUG_SYMBOLS=y enabled and change CONFIG_DEBUG_SYMBOLS_LEVEL to -g3.

  2. Use GDB to debug the NuttX ELF binary (on a real device, a simulator, or with a coredump).

  3. Add the following argument to the GDB command line: -ix="nuttx/tools/pynuttx/gdbinit.py"

  4. 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