=============== 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. .. toctree:: :caption: GDB Plugin Commands :maxdepth: 1 gdb/irqinfo.rst