设置断点/观察点。
语法
bpadd <options>
在地址、函数或 <file>
:<line>
处设置软件或硬件断点、设置读/写观察点,或者设置交叉触发断点。
选项
选项 | 描述 |
---|---|
-addr <breakpoint-address>
|
指定应在其中设置断点的地址。 |
-file <file-name>
|
指定应在其中设置断点的 <file-name> 。 |
-line <line-number>
|
指定文件中应设置断点的 <line-number> 。 |
-type <breakpoint-type>
|
指定断点类型 <breakpoint-type> ,可设为以下任一值:auto = 自动 - 断点类型由 hw_server/TCF 代理来选择。这是默认类型。hw = 硬件断点。sw = 软件断点。 |
-mode <breakpoint-mode>
|
指定将触发断点的访问模式。<breakpoint-mode> 可按位设置,或者也可以设为以下值:0x1 表示通过读取断点位置来触发。0x2 表示通过写入断点位置来触发。0x4 表示通过在断点位置执行指令来触发。对于行断点和地址断点,这是默认设置。0x8 表示通过在断点位置执行数据更改(非显式写入)来触发。 |
-enable <mode>
|
指定断点的初始启用状态。当 <mode> 为 0 时,禁用断点,否则启用断点。默认为启用。 |
-ct-input <list> -ct-output <list>
|
指定输入和输出交叉触发。<list> 为数值列表,用于标识交叉触发管脚。对于 Zynq,0-7 为用于核 0 的 CTI,8-15 为用于核 1 的 CTI,16-23 为 CTI ETB 和 TPIU,24-31 则是用于 FTM 的 CTI。 |
-skip-on-step <value>
|
指定步进时的触发行为。仅当使用 DBGACK 作为断点输入时,该选项才适用,并且仅适用于交叉触发断点。0 = 每次核停止时触发(默认)。1 = 单步跳过代码断点时,禁止触发。2 = 发生任何种类的步进时,禁止触发。 |
-properties <dict>
|
指定高级断点属性。 |
-meta-data <dict>
|
指定高级断点属性的元数据。 |
-target-id <id>
|
指定应为其设置断点的目标 ID。可通过将 <id> 指定为“all”来为所有目标设置断点。如果不使用该选项,那么将为通过目标命令选择的活动目标设置断点。如果没有活动目标,则为所有目标设置断点。 |
-temp
|
触发一次后断点,就会将其移除。 |
-skip-prologue
|
对于函数断点,植入断点时会跳过函数序言。 |
注释
- 断点可以先在 XSDB 中设置,然后再连接到 hw_server/TCF 代理。如果设置断点时已有活动目标,则将仅针对该活动目标启用断点。如果没有活动目标,则将为所有目标启用断点。target-id 选项可用于为特定目标或所有目标设置断点。也可在不使用 -addr、-file 或 -line 选项的情况下设置地址断点或 file:line 断点。对于地址断点,请将地址指定为实参,并位于所有其他选项之后。对于 file:line 断点,请以
<file>
:<line>
格式指定文件名和行号,将其设为实参,置于所有其他选项之后。
返回
如果指定的目标 ID 无效,则会显示断点 ID 或报错。
示例
bpadd -addr 0x100000
在地址 0x100000 处设置断点。断点类型由 hw_server/TCF 代理来选择。
bpadd -addr &main
在 main 处设置函数断点。断点类型由 hw_server/TCF 代理来选择。
bpadd -file test.c -line 23 -type hw
在 test.c:23 处设置硬件断点。
bpadd -target-id all 0x100
在地址 0x100 处为所有目标设置断点。
bpadd -target-id 2 test.c:23
为 test.c 中的行 23 处的目标 2 设置断点。
bpadd -addr &fooVar -type hw -mode 0x3
在变量 fooVar 处设置读取/写入观察点。
bpadd -ct-input 0 -ct-output 8
设置交叉触发以在核 0 停止时,停止 Zynq 核 1。