Most readers of these guides will have at least some experience with debuggers. No matter which debugger you choose to use, there will always be some common features that every debugger will offer. For instance, every debugger will provide ways to:

  • Connect to a target
  • Download a program
  • Start, stop, and step through program execution
  • View memory and registers contents

This guide will not focus on what a debugger offers, or on different debugging methodologies. Instead, we will look at characteristics that are common to bare-metal debuggers that target the Armv8-A architecture. Also, we will explain how these features are achieved, what you need to consider when you work with them, and possible consequences of their use. This guide uses Arm Development Studio, Arm Compiler 6, and GNU Compiler Collection (GCC) to illustrate these concepts.

At the end of this guide you will understand:

  • The areas of interest when loading a program and connecting with a debugger
  • The problems that might occur when performing a reset
  • Different debugger operations, how each operation is performed, and the possible effects of each operation
  • The importance of the different memory spaces and register sets used by an Armv8-A processor
  • What a user will experience when debugging over processor or core powerdown
Before you begin

This guide assumes that you are familiar with other guides in this series:

You should also be familiar with the material in our Common Tasks guide Building your first embedded image.