2.3.135. TRACEINSTREXEC

The TRACEINSTREXEC command enables you to set a tracepoint on instruction execution.

Syntax

TRACEINSTREXEC [,qualifier...] {address | address_range}

where:

qualifier

Is an ordered list of zero or more qualifiers. The possible qualifiers are described in List of qualifiers.

address

Specifies the address at which the tracepoint is placed.

address_range

Specifies the address range at which the tracepoint is placed. See Specifying address ranges for details on how to specify an address range.

Description

This command sets a tracepoint at the address or address range you specify that triggers when an instruction is executed in the indicated address range.

The tracepoint type is by default to trigger, that is, start collecting trace information into the trace buffer. You can modify the action using the hw_out: qualifier to, for example, stop tracing.

For more information about tracepoints and the way you access the ETM, see the Embedded Trace Macrocell Specification and the chapter that describes tracing in RealView Developer Kit v2.2 Extensions User Guide.

List of qualifiers

The command qualifiers are as follows, but not all qualifiers are available for all of the supported trace targets:

gui

If an error occurs when executing the command or when the tracepoint is triggered, the GUI is used to report it. Otherwise, the error is reported to the command pane.

Note

This qualifier has no effect in the headless debugger.

hw_ahigh:(n)

Specifies the high address for an address-range tracepoint. The low address is specified by the standard tracepoint address.

For example, this command sets a tracepoint that triggers for any address between 0x1000-0x1200:

TRCIE,hw_ahigh:0x1200 0x1000
hw_dvalue:(n)

Specifies a data value to be compared to values transmitted on the processor data bus.

For example, this command sets a tracepoint that triggers when the instruction opcode 0xEA000040 is executed in code between 0x1FA00-0x1FAFF:

TRCIE,hw_dvalue:0xEA000040 0x1FA00..0x1FAFF
hw_dhigh:(n)

Specifies the high data value for a data-range tracepoint. The low data value is specified by the hw_dvalue qualifier.

For example, this command sets a tracepoint that triggers when the instruction opcode between 0xEA000040-0xEA00004F is executed in code between 0x1FA00-0x1FAFF:

TRCIE,hw_dvalue:0xEA000040,hw_dhigh:0xEA00004F 0x1FA00..0x1FAFF
hw_dmask:(n)

Specifies the data value mask value for a data-range tracepoint. Data values that match the value specified by the hw_dvalue qualifier when masked with this value cause the tracepoint to trigger.

For example, this command sets a tracepoint that triggers when the an instruction with basic opcode 0xEA000040 but with any value in bits [15:8] is executed in code between 0x1FA00-0x1FAFF:

TRCIE,hw_dvalue:0xEA000040,hw_dmask:0xFFFF00FF 0x1FA00..0x1FAFF
hw_passcount:(n)

Specifies the number of times that the specified condition has to occur to trigger the tracepoint. You can use this option to set up and use the ARM ETM counter hardware, if the ETM has counters exists and there is one available for use. ETM counters are 32 bits.

hw_and:{[then-]id}

Perform an and or an and-then conjunction with an existing tracepoint. For example, hw_and:h2, or hw_and:"then-h2", where 2 is the tracepoint id of another tracepoint.

In the and form, the conditions associated with both tracepoints are chained together, so that the action associated with the second tracepoint is performed only when both conditions match at the same time.

In the and-then form, when the condition for the first tracepoint is met, the second tracepoint is enabled. When the second tracepoint condition is matched, even if the first condition no longer matches, the actions associated are performed.

The id is one of:

  • the tracepoint list index of an existing of tracepoint, and has the format hindex, for example h1

  • prev for the last tracepoint specified for this connection

  • next for the target of this condition.

hw_in:{s}

Input trigger tests. The string s is specific to the trace connection being used. For the ARM ETM, the following case-sensitive forms are defined:

"Check Condition Code=s"

For instruction tracepoints, comparisons, check the instruction condition code against the specified value, and return True if it matches, where s is:

Pass

Trace only instructions that are executed.

Fail

Trace only instructions that are not executed.

hw_out:{s}

Output trigger tests. The string s is specific to the trace connection being used. For the ARM ETM, the following case-sensitive forms are defined:

"Tracepoint Type=s"

Specify the trace action for this command, where s depends on the target connection:

  • For an ETM-based hardware target s is:

    Trigger

    Sets a trigger point.

    Start Tracing

    Sets a trace start point.

    Stop Tracing

    Sets a trace stop point.

    Trace Instr

    Sets an instruction-only trace range.

    Trace Instr and Data

    Sets an instruction and data trace range.

hw_not:{s}

Use this qualifier to invert the sense of an address, data, or hw_and term specified in the same command. The argument s can be set to:

addr

Invert the tracepoint address value.

data

Invert the tracepoint value.

then

Invert an associated hw_and:{then} condition.

For example, to trace when a data value does not match a mask, you can write:

TRCIE,hw_not:data,hw_dmask:0x00FF ...

The trace commands require an address value, and the addr variant of hw_not uses this address.

TRCIE,hw_not:addr 0x10040..0x10060

This means to trace execution at addresses other than the range 0x10040 to 0x10060, that is, exclude this region from the trace.

The hw_not:then variant of the command is used in conjunction with hw_and to form or and nand-then conditions.

modify:(n)

Instead of creating a new tracepoint, modify the tracepoint with tracepoint ID number n by replacing the address expression and the qualifiers of the existing tracepoint to those specified in this command.

Note

You cannot use this qualifier with the hw_and qualifier to change a non-chained tracepoint to a chained tracepoint. However, you can modify a chained tracepoint with any other qualifier and also change the address expression.

Examples

The following examples show how to use TRACEINSTREXEC:

TRACEINSTREXEC \MATH_1\#449.3

Set a hardware tracepoint at statement 3 of line 449 in the file math.c.

TRCIE,hw_pass:(5) \MAIN_1\#35

Set a hardware tracepoint using an ETM counter to enable tracing the fifth time that execution reaches line 35 of main.c.

Alias

TRCIEXEC is an alias of TRACEINSTREXEC.

See also

The following commands provide similar or related functionality:

Copyright © 2005, 2006 ARM Limited. All rights reserved.ARM DUI 0284C
Non-Confidential