Runtime Debugging

Subpages

Introduction

The purpose of this page is to give an overview of the current state of the explored runtime debugging setups for TRENTOS on the supported platforms. The main focus of the page will be on three different setups:

Overview of the Functionalities

Symbol

Explanation

"tick"

The feature works reliably.

"warning"

The feature works to an extent / under special conditions.

"error"

The feature does not work.

Debugging Applications Running in QEMU

Functionality

QEMU

Halting/Releasing the program execution

"tick"

Setting/Hitting breakpoints

"tick"

Resetting the platform

"warning"

Stepping through

"tick"

Memory inspection

"tick"

Register querying

"tick"

Debugging Applications Running on HW Platforms

OpenOCD Toolchain

Functionality

RPI3B+

Nitrogen6_SoloX

BD-SL-i.MX6

Halting/Releasing the program execution

"warning"

"tick"

"tick"

Setting/Hitting breakpoints

"warning"

"tick"

"tick"

Resetting the platform

"error"

"warning"

"warning"

Stepping through

"error"

"tick"

"tick"

Memory inspection

"tick"

(if halting is successful)

"tick"

"tick"

Register querying

"tick"

(if halting is successful)

"tick"

"tick"

Segger Toolchain

Functionality

RPI3B+

Nitrogen6_SoloX

BD-SL-i.MX6

Halting/Releasing the program execution

"error"

"tick"

"tick"

Setting/Hitting breakpoints

"error"

"tick"

"tick"

Resetting the platform

"error"

"warning"

"warning"

Stepping through

"error"

"tick"

"tick"

Memory inspection

"error"

"tick"

"tick"

Register querying

"error"

"tick"

"tick"

Additional Notes

  • As it is clear from the tables presented in the previous sections, runtime debugging has the most limited scope on the RPi3B+ platform since it is not supported by the Segger toolchain, and a limited set of features is available when using the OpenOCD toolchain. Still, the setup for this platform is included in the documentation to serve as a starting point to be expanded upon by more experienced users or as an additional tool (with limited functionalities) which can be of use in certain circumstances.

  • Even though the feature tables present a similar story when it comes to using the OpenOCD toolchain compared to the Segger toolchain with the Nitrogen6_SoloX and BD-SL-i.MX6 platforms, the user experience is quite different. The benefits of the Segger toolchain are primarily the convenience of using an IDE-like tool like Ozone compared to using OpenOCD + gdbgui and a simpler HW setup. Also, Ozone contains more advanced features compared to gdbgui, but their usability depends on the use case and the experience level of the user. Finally, the down side of the Segger toolchain is the price of the probes and the SW license for Ozone.