猎豹wifi遥控器下载:Breakpoints

来源:百度文库 编辑:中财网 时间:2024/05/09 10:21:56

Breakpoints

uVision4 允许你以几种不同的方式定义breakpoints。在进行源代码编辑时甚至在程序代码编译前你可以设置Execution Breakpoints

Breakpoints可以用下面的方式定义及修改:

  • 利用工具栏按钮。在编辑或反汇编窗口中正确选择代码行在工具栏中单击breakpoint按钮。
  • 在编辑或反汇编窗口中通过关联菜单利用中的breakpoint命令。
  • 在编辑或反汇编窗口中双击左侧灰色窗体栏。
  • 通过Debut—>Breakpoints...对话框你可以查看、定义及修改breakpoint。这个对话框允许你定义定义不同访问属性的breakpoint。参考下面的实例。
  • 输出窗口—>命令页中你可以使用BreakSetBreakKillBreakEnableBreakDisable命令。

Breakpoint对话框允许你查看并修改breakpoints。可以通过鼠标单击Current Breakpoints列表中的复选框使能或禁止breakpoints。通过双击Current Breakpoints列表中breakpoint可以修改其定义。

在Breakpoint对话框中可以通过一个表达式(Expression)定义breakpoint。通过表达式形式可定义下面的breakpoint类型:

  • 当表达式是一个代码地址时,一个执行断点(Execution Break(E))被定义,当达到指定的代码地址时被定义的断点便会生效。代码地址必须是CPU可执行的第一条指令。
  • 当通过Access定义了一个内存访问(读,写或两者之一)断点,Access Break(A)被定义,当发生指定的内存访问时被定义的断点便会生效。你可以在内存访问窗口中指定bytes或object大小。一个访问断点必须是一个存储地址及存储类型。操作符(&, &&, <. <=. >, >=, = =, and !=)可以用来比较变量值 在访问断点停止程序执行前或执行这个命令。
  • 当表达式无法被简化为一个地址时,将定义为一个条件断点(Conditional Break(C)) 。当符合指定条件时被定义的断点便会生效。条件表达式在每个CPU指令后会重新计算,因此程序执行速度会变得非常慢。

当你为一个断点指定一个命令时,uVision4执行命令然后继续执行你的目标程序。在这里你指定的命令可能是一个uVision4调试或信号函数。在uVision4中停止程序的执行,设置_break_系统变量。更多信息参考SystemVariables.

 

The Count value specifies the number of times thebreakpoint expression is true before the breakpoint is triggered.

断点实例:

       下面详细描述在breakpoint对话框中所示的定义。CurrentBreakpoint列表概述断点类型及物理地址,接下来是Expression、Command及Count。

Expression:

\Measure\125

执行断点(Execution Break (E)) 在MEASURE模块中当目标程序到达代码行125时将停止。

Expression:

Main

执行断点(Execution Break (E))当目标程序到达main函数时停止

Expression:
Count:

save_current_measurements
10

Execution Break (E) 当目标程序到达save_current_measurements函数

the 10th time时停止.

Expression:
Command:

tc0
printf ("T0 Interrupt 0ccurred")

Execution Break (E) 当目标代码执行到函数tc0 在Output Window – Command 面页输出T0 Interrupt occurred

Expression:

sendchar == 96

条件断点Conditional Break (C) 当表达式sendchar == 96 成立时停止执行程序。在上述Breakpoints对话框中这个断点是禁止的。

Expression:
Access:
Size:

save_record[10]
Read Write
3 Objects

访问断点Access Break (A)当出现一个save_record[10]读或写访问时停止执行程序。由于save_record 是一个16Bytes的结构体这个断点定义了一个48Byte的访问范围。

Expression:
Access:

sindex == 10
Write

访问断点Access Break (A) 当一个为10的数值写入变量sindex时停止执行程序。

Expression:
Command:

measure_display
MyStatus ()

执行断点Execution Break (E) 当目标程序到达函数measure_display 时执行uVision调试函数MyStatus。调试函数MyStatus执行后继续执行目标程序。