如何在Trace 32

时间:2017-06-29 05:29:09

标签: trace32 lauterbach

我想设置一个断点,当两个变量包含某个值时,它会停止我的应用程序。例如。当x == 10和y == 11时停止执行。

我如何在劳特巴赫TRACE32中实现这一目标?

1 个答案:

答案 0 :(得分:1)

命令Var.Break.Set有一个选项\VarCONDition,它使您可以指定一个条件,在该条件下,一旦CPU碰到相应的断点,它就保持停止状态。 (在单击“高级”的对话框中,您可以在设置断点的对话框中找到该字段的“条件”。)

因此对于您来说,所需的两个命令将是:

Var.Break.Set x /Write /VarCONDition (x==10 && y==11) 
Var.Break.Set y /Write /VarCONDition (x==10 && y==11) 

结果是,每次写入x或y时CPU都会停止,但是当不满足条件“ x == 11 && y == 11”时,CPU将立即重启。

当然x和y必须位于内存中。

如果在CPU寄存器中实现了该变量,它将无法正常工作(除非您拥有这些罕见的CPU中的一个,它支持核心寄存器上的读/写断点。)

如果您使用的是Cortex-A或Cortex-R CPU,则还必须添加选项“ / AfterStep”,因为这些处理器对于地址写入断点也具有先断后合的行为。

如果您的CPU支持数据值断点(例如Cortex-M4),您也可以像这样设置断点

Var.Break.Set x /Write /DATA 10. /VarCONDition y==11 
Var.Break.Set y /Write /DATA 11. /VarCONDition x==10. 

这样做要好得多,因为它仅在将正确的值写入x或y时才停止CPU,并在另一个变量也具有正确的值时保持停止。