µVision4 User's Guide

Technical Support

On-Line Manuals

µVision4 User's Guide

About µVision User Interface Creating Applications Utilities Debugging Using the Debugger Simulation Start Debugging Application Program Execution Debug Windows and Dialogs Breakpoints Window Call Stack and Locals Window Code Coverage Command Window Disassembly Window Event Viewer Execution Profiler Instruction Trace Window Logic Analyzer Setup Setup in Detail Restrictions Using the Logic Analyzer Memory Map Memory Window Performance Analyzer Registers Window Serial Window Symbols Window System Viewer Adding System Viewer Windows Toolbox Trace Data Window Trace Navigation Watch Window 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 Memory Type Specifiers Differences Between µVision4 and C Expression Examples 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) Debug Commands Debug Functions Simulation Flash Programming Dialogs Example Programs Command Line Appendix

Check Illegal Memory Access

Check illegal memory access with access breakpoints using the system variable _break_.

The example stops program execution when the array save_record is accessed outside of the function clear_records. This example is written for the Measure project located in the folder \toolchain\Examples\Measure.

Expression:

// expression to check
\measure\save_record

Command:

// stop execution when save_record has been accessed outside of clear_records()
// 0x24 - size of clear_records  (the size depends on the toolchain selected and needs adaptation)
// $ - PC

_break_ = ($ < \\measure\\clear_records || $ >= \\measure\\clear_records + 0x24)

Illegal Memory Access Check

Add the following test instruction to main().

save_record[1].time.hour = 0xff;

The program stops:

  • While initializing the array save_record.
  • Right after the test instruction has been executed.
  • Whenever the array is accessed outside of clear_records.