【发布时间】:2016-04-17 16:30:37
【问题描述】:
如何在 lldb 中设置断点,当 register == somevalue 时停止 (rdi = 0x0000000000000000)?有可能吗?
【问题讨论】:
如何在 lldb 中设置断点,当 register == somevalue 时停止 (rdi = 0x0000000000000000)?有可能吗?
【问题讨论】:
lldb 表达式解析器提供$rdi、$rsi 等作为寄存器值的便利变量。所以:
(lldb) break modify -c "$rdi == 0x0000000000000000" <BKPT_NO>
将完成这项工作。您还可以在设置断点时指定 -c(即 --condition)选项。
注意,对于在寄存器中传递参数的架构,lldb 也有“$arg1”、“$arg2”等。这些只是 ABI 指定的参数传递寄存器的别名,所以如果你在中间的某个地方他们将不再保存参数值的函数。但是对于在函数开头设置断点,它们可以派上用场。
【讨论】: