11.1.1. Software and hardware breakpoints

RealView Debugger enables you to set software or hardware breakpoints, depending on your target memory type.

Software breakpoints

These breakpoints are placed by RealView Debugger by temporarily modifying program memory with a special instruction opcode. Because RealView Debugger requires write access to program memory, software breakpoints can only be set in RAM.

Note

In memory that is shared between multiple processors it is not advisable to use software breakpoints, because they are hit on both targets.

Hardware breakpoints

Hardware breakpoints are implemented by EmbeddedICE® logic that monitors the address and data buses of your processor. For simulated targets, hardware breakpoints are implemented by your simulator software. The complexity and number of breakpoints you can set depends on:

  • hardware support provided by your target processor

  • the Debug Interface used to maintain the target connection.

Note

RealView Debugger can reserve one breakpoint unit for internal use (for example, when one or more software breakpoints are set). Therefore, there might be one fewer hardware breakpoint available to you. An error message is displayed if you try to set a hardware breakpoint when the limit is reached.

If advanced breakpoint support is provided by your target or simulator software, for example RealView ARMulator® ISS (RVISS), you can set more complex hardware breakpoints. These breakpoints might be data-dependent or take advantage of range functionality. For example, some targets enable you to chain two breakpoints together, so that the breakpoint activates only when the conditions of both breakpoints are met.

Check your vendor-supplied documentation, to determine the breakpoint capability of your hardware, if supported.

Note

You cannot set breakpoints on core registers. However, you can set breakpoints on memory mapped registers.

The number of hardware breakpoints supported by your debug target is both architecture and design specific. RealView Debugger menu options related to hardware breakpoints are grayed out if your target cannot support them.

Considerations when setting breakpoints

Be aware of the following when setting breakpoints:

  • If your image is compiled with a high optimization level, then the effect of setting a breakpoint in the source view depends on where you set the breakpoint. For example, if you set a breakpoint on an inlined function, then a breakpoint is created for each instance of that inlined function. Therefore, if you set a hardware breakpoint on an inlined function, the target can run out of breakpoint resources.

  • On some processors, a software breakpoint uses a hardware breakpoint resource, and all software breakpoints share this same resource. Therefore, if you run out of hardware breakpoint resource on those processors:

    • You can set a software breakpoint only if another software breakpoint is already set. Otherwise, the following error is displayed in the Cmd tab of the Output view:

      Error V28507 (Vehicle): Insufficient hardware resources for software breakpoints.

    • When you attempt to set a hardware breakpoint, and a software breakpoint is already set, then a software breakpoint is set instead. In addition, the following message is displayed in the Cmd tab of the Output view:

      Information: SW breakpoint set - unable to set HW breakpoint
      
    • If the existing breakpoints are all hardware breakpoints, then you cannot set another breakpoint. if you attempt to set another breakpoint, the following error message is displayed in the Cmd tab of the Output view:

      Error V28502 (Vehicle): No hardware resource available to set hardware breakpoint.

  • Enabling a Memory Management Unit (MMU) might set a region of memory to read-only. If that memory region contains a software breakpoint, then that software breakpoint is set to read-only and cannot be removed. Therefore, make sure you clear software breakpoints before enabling the MMU.

  • If RealView Debugger cannot set any more breakpoints, then rapid instruction step is used for high-level stepping. A message is also displayed to explain the type of step being used.

  • When working with RVISS targets:

    • Watchpoints are available. These are called hardware breakpoints in RealView Debugger. You set these breakpoints using the same methods that are available for hardware development platforms. However, there is no corresponding hardware resource limit for RVISS targets.

    • Hardware breakpoints can use address ranges, data values, and data value range tests. They can also specify data size, processor mode, and pass counts.

    • Hardware breakpoints can be chained to form complex breakpoint conditions.

    Note

    Although you can set all types of hardware breakpoint on any RVISS target, the physical hardware might not support all the features of hardware breakpoints.

See also

Copyright © 2002-2009 ARM Limited. All rights reserved.ARM DUI 0153K
Non-Confidential