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