bpadd - 2023.2 简体中文

Vitis 统一软件平台文档 嵌入式软件开发 (UG1400)

Document ID
UG1400
Release Date
2023-12-13
Version
2023.2 简体中文

设置断点/观察点。

语法

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。