Keil Logo

Technical Support

On-Line Manuals

µVision User's Guide

About µVision User Interface Creating Applications Debugging Start Debugging Start Energy Measurement without Debug Application Program Execution Debug Windows and Dialogs Breakpoints Window Call Stack and Locals Window Code Coverage Command Window Component Viewer Disassembly Window Event Recorder Setup Event Recorder Event Recorder Window Events Filtering Event Statistics Window Event Viewer Execution Profiler Instruction Trace Window System Analyzer Usage tips Restrictions Logic Analyzer Setup Setup in Detail Restrictions Cortex-M Trace Configuration Memory Map Memory Window Performance Analyzer Registers Window Serial Window Debug (printf) Viewer Symbols Window System Viewer Adding System Viewer Windows System and Thread Viewer Thread States Toolbox Trace Data Window Trace Navigation Trace Exceptions Event Counters ULINKplus Window Watch Window Core Peripherals Cortex-M0 and Cortex-M0+ Nested Vector Interrupt Controller System Control and Configuration System Tick Timer Fault Reports (Cortex-M0+ only) Cortex-M3, Cortex-M4, and Cortex-M7 Nested Vector Interrupt Controller System Control and Configuration System Tick Timer Fault Reports Memory Protection Unit Cortex-M23 and Cortex-M33 Nested Vector Interrupt Controller System Control and Configuration System Tick Timer Fault Reports Memory Protection Unit Security Attribution Unit Debug Scripting Expressions Constants System Variables Peripheral Variables I/O Ports Serial Ports Program Variables (Symbols) Fully Qualified Symbols Non-Qualified Symbols Literal Symbols Using Symbols Line Numbers Bit Addresses Type Specifications Operators Differences between µVision and C Expression Examples Code and Data Trace (Cortex-M) Trace Features Configuring Trace Tracepoint Expressions Tracepoint Intrinsics Tracepoint Limitations Tracepoint Marks Tips and Tricks Review Peripherals and CPU Configuration Simulate I/O Ports Simulate Interrupts and Clock Inputs Simulate external I/O Devices Assign Serial I/O to a PC COM Port Check Illegal Memory Access Command Input from File Preset I/O Ports or Memory Contents Write Debug Output to a File Keyboard Shortcuts TPIU Initialization after RESET (Cortex-M) Prevent Opening Files Show Japanese Messages Debug Commands Debug Functions Simulation Flash Programming Dialogs Utilities Command Line Example Programs Appendix

Tracepoint Expressions

Tracepoint expressions can consist of any of the following components:

  • An explicit address or address range.
  • Function or variable symbols.
  • A comparison value within a TraceRun, TraceSuspend, or TraceHalt command. The tracepoint command must specify a data memory address.
  • Intrinsics for all tracepoint commands.

Tracepoint Expression Rules

  • Expressions are evaluated at the time the tracepoint gets defined. If a pointer is used to define a tracepoint, make sure that the pointer holds the correct memory address.
  • Defining a tracepoint on a structure instance via a pointer requires dereferencing this pointer. Otherwise, the tracepoint refers to the pointer variable and triggers on changing the address value of the pointer.
  • Address ranges are aligned automatically to fulfill the trace hardware constraints. Often, this might be the case when monitoring data structures or arrays. List the adjusted and original address range with the command TraceList.
  • Function symbols and source code lines resolve to the default access type "_codeacc_" (E).
  • Variables resolve to the default access type "_writeacc_" (WR).
  • A plain constant address resolves to the default access type "_codeacc_" (E), if the address is known from the debug information to be an instruction address. Otherwise, the default is "_writeacc_" (WR).
  • Equality comparisons are possible for data memory accesses only.
  • Equality comparisons are not allowed for the commands TraceDataPoint and TraceAccessPoint.
  • Comparison values must be constant values. The value needs to fit into the value range of the variable type.
  • Address ranges are defined in parenthesis and consist of an address and the number of elements to monitor. The parameters are separated by a comma. The access size is determined by the data type of the variable. If a plain address is given, the access size is in Bytes.
  • The type of a plain constant used as address is 'char'. To associate a different type to an address, cast the address expression:
    TR _writeacc_((unsigned int*)(0x10000004)) == 10    //!! incorrect; this cast
                                                                      will result in the pointer type
    
    TR _writeacc_(*((unsigned int*)(0x10000004))) == 10 //!! correct, this cast will result
                                                                          in the type the pointer points to
    
  • The negation operator (!) can be used only in the command TraceHalt.

Additional examples are provided in the tracepoint command descriptions.

  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.