Software rarely works 100% correctly the first time you run it.

Debugging lets you investigate the operation of your code: single-stepping through instructions, inspecting the values of registers and memory during program execution, or setting breakpoints to pause execution at particular places in your code.

A number of tools are available to help you debug your software:

  • Simulation models such as Cycle Models, Fast Models, and Fixed Virtual Platforms let you develop software for Arm IP even when you don't have access to hardware.
  • If you do have access to hardware, debug probes such as DSTREAM and ULINK let you look inside the system you're debugging: collecting trace information, inspecting register values, and reading memory locations.
  • Arm Development Studio includes Arm Debugger, which helps you get to the root of software bugs throughout your development process.
  • For application development on Linux or Android, it is common to use GDB (the GNU Project Debugger) or ADB (Android Debug Bridge). These methods of debug do not make a connection into the lower level CoreSight architecture of a system and instead rely on a server to allow software debug. GDB is integrated into Arm Development Studio.