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.
Debug with simulation models
- The Debugging Hello World in C on a Fixed Virtual Platform tutorial shows how to debug software using a Cortex-A9 Fixed Virtual Platform (FVP).
- This New Model Connection video shows you the steps necessary to configure Arm Debugger for use with your virtual platform.
- The Application debug with Arm Debugger tutorial shows how to step through your code line-by-line, examining disassembly instructions and memory contents as you go.
- This Memory access within Arm Debugger video provides an introduction to accessing memory with the Arm Debugger.
Debug with hardware
Arm Development Studio ships with pre-loaded debug configurations and examples for many popular devices. However, if you are designing your own SoC or are developing software for a less popular ASIC, Arm Debugger and DSTREAM debug probe can help to create a new device configuration.
- This New Hardware Connection video shows you the steps to connecting the Arm Debugger to any hardware target.
- This Debugging on bare-metal targets using DS-5 and GCC compiler tutorial shows you how to set up your project to use the GCC bare-metal compiler. It then guides you through creating a simple bare-metal Hello World application and finally running it on an Altera Cyclone V SoC.
- This Vybrid Tower System Debug Session tutorial guides you through creating a debug session to the Cortex-A5 device on the Vybrid board.
- Tracing using DS-5 Debugger from the Command Line shows you how to drive DS-5 Debugger from the command line. This can help to save significant time if you are automating tests or carrying out repetitive tasks.
- This Using the CoreSight ELA-500 Embedded Logic Analyzer with Arm DS-5 tutorial shows how to debug a real-world deadlock scenario caused by a bus transaction hang, using a Cortex-A72-based system.
Linux and Android debug
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.
- The Debugging a Linux Symmetric Multi-Processing (SMP) Kernel tutorial shows how to use Arm Development Studio to debug a Linux SMP kernel.
- The Linux application debug on a development board tutorial shows how to use gdbserver to debug a Linux application.
- The Linux Application Debugging using an FVP simulation model tutorial takes you through the process of creating a simple "Hello World" Linux application and then loading the application on a Cortex-A9 Fixed Virtual Platform (FVP) model running Arm embedded Linux. The Cortex-A9 Fixed Virtual Platform (FVP) model is provided with DS-5.
- The Debugging Android native C/C++ applications and libraries tutorial describes how to debug the hello-neon application provided with the Android Native Development Kit (NDK). It uses the Android SDK Platform 2.2 and the Android emulator as the target.