1.3.2 advance

Sets a temporary breakpoint at the specified address and calls the debugger continue command. Use the advance command to halt execution at a particular point in your code, for example a specific function, source code line number, or instruction memory address.

Execution continues until it hits the temporary breakpoint (or until execution halts for another reason, for example the end of the program is reached).

Temporary breakpoints are deleted when hit.

Syntax

advance [-p] [filename:]line_num
advance [-p] [filename:]function
advance [-p] [filename:]label
advance [-p] *address
advance +offset | -offset

Where:

-p

Creates pending breakpoints for unrecognized locations.

By default, specifying an unrecognized breakpoint location (for example, a non-existent function name) results in an error.

The >–p option creates pending breakpoints for unrecognized locations instead. This is useful when debugging shared libraries. Shared libraries are loaded on demand, so locations are unrecognized until the library is loaded. For more information, see Pending breakpoints and watchpoints.

Note:

If you want to debug a shared library, you must load debug symbols from the shared library as well as the application itself. For more information, see About debugging shared libraries.

filename

Sets a temporary breakpoint on a function, label, or line number in the specified source file.

Functions and labels are usually unique, so the debugger can identify the breakpoint location from the name alone.

However, if you have ambiguous function or label names in your source code, for example static functions named myfunc in both file_a.c and file_b.c, use the filename to identify the precise function. For example, advance file_a.c:myfunc.

line_num

Sets a breakpoint at the specified line number in the source file filename.

If no filename is specified, the debugger assumes the source file containing the current location.

function

Sets a breakpoint on the specified function name.

label

Sets a breakpoint on the specified assembly label.

Note:

You can only set breakpoints on labels that are present in the executable image. Toolchains might not preserve all symbol names in the final image by default. For example, with ARM Compiler 5 you must specify either the KEEP assembler directive or the armasm --keep option to retain local symbols.

*address

Sets a breakpoint at the specified address. Specify either an address (for example advance *0x8000024C) or an expression that evaluates to an address (for example advance *$R4+64 or advance *$PC+256). For more information about expressions, see Expressions within DS-5.

+offset | -offset

Sets a breakpoint on the source code line offset from the current location by the specified amount.

Usage

The advance command returns control as soon as the target is running. You can use the waitcommand to block the debugger from returning control until, for example, the application completes or a breakpoint is hit. This is useful if you are scripting DS-5 commands and do not want subsequent commands to run until after the breakpoint has been reached.

Example 1-5 Examples

advance func1                 # To set a temporary breakpoint at func1, then resume execution
advance -p lib.c:foo          # To set a temporary breakpoint on function foo() in lib.c, then resume execution.
                              # If lib.c is unrecognized (for example, if lib.c is compiled to a shared library),
                              # the debugger creates a pending breakpoint.
Non-ConfidentialPDF file icon PDF versionARM DUI0452Z
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.