gpt4 book ai didi

trace32 - 如何在 Trace 32 中放置具有逻辑条件的断点

转载 作者:行者123 更新时间:2023-12-04 15:52:07 30 4
gpt4 key购买 nike

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

我怎样才能在劳特巴赫 TRACE32 中实现这一目标?

最佳答案

命令 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”时会立即重新启动。

当然 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,如果另一个变量也具有正确的值,则保持停止。

关于trace32 - 如何在 Trace 32 中放置具有逻辑条件的断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44816985/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com