猎豹wifi遥控器下载:Breakpoints
来源:百度文库 编辑:中财网 时间:2024/05/09 10:21:56
Breakpoints
uVision4 允许你以几种不同的方式定义breakpoints。在进行源代码编辑时甚至在程序代码编译前你可以设置Execution Breakpoints。
Breakpoints可以用下面的方式定义及修改:
- 利用工具栏按钮。在编辑或反汇编窗口中正确选择代码行在工具栏中单击breakpoint按钮。
- 在编辑或反汇编窗口中通过关联菜单利用中的breakpoint命令。
- 在编辑或反汇编窗口中双击左侧灰色窗体栏。
- 通过Debut—>Breakpoints...对话框你可以查看、定义及修改breakpoint。这个对话框允许你定义定义不同访问属性的breakpoint。参考下面的实例。
- 在输出窗口—>命令页中你可以使用BreakSet、BreakKill、BreakEnable、及BreakDisable命令。
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执行后继续执行目标程序。
Count:
10
Command:
printf ("T0 Interrupt 0ccurred")
Access:
Size:
Read Write
3 Objects
Access:
Write
Command:
MyStatus ()