【发布时间】:2019-04-02 14:21:05
【问题描述】:
在玩过 lldb 之后,我想探索一种在条件自动应用(断点)时写入寄存器或内存值的方法。
lldb 有这样的功能吗?
谢谢
【问题讨论】:
标签: lldb
在玩过 lldb 之后,我想探索一种在条件自动应用(断点)时写入寄存器或内存值的方法。
lldb 有这样的功能吗?
谢谢
【问题讨论】:
标签: lldb
lldb 断点有条件和命令。条件(break set 或 break modify 的-c 选项)是在断点命中的帧上下文中评估的 C (ObjC/C++) 表达式。
这些命令(添加了breakpoint command add)只有在条件评估为真时才会运行。因此,如果您可以将条件表示为表达式,并将操作表示为一系列固定的 lldb 命令,那么您可以通过这种方式实现您想要的行为。
您还可以在 Python 中编写断点命令(breakpoint command add -s python 使用 SB API:
https://lldb.llvm.org/python_reference/index.html
因此,如果您希望在更复杂的条件下进行更改或执行更复杂的操作,则可以使用 Python API 完成这些任务。
【讨论】:
lldb.frame.registers[0].GetChildMemberWithName("x0") 打印 x0 的值。有关更多信息,请参阅lldb.llvm.org/python_reference/lldb.SBValueList-class.html 上有关 SBValueList 的文档。