LLDB 如何设置当寄存器==某个值时停止的断点?

Jus*_*Man 4 debugging lldb

如何在lldb中设置断点,当register == somevalue (rdi = 0x0000000000000000)时停止?是否可以?

Jim*_*ham 6

lldb 表达式解析器提供$rdi$rsi等作为寄存器值的便利变量。所以:

(lldb) break modify -c "$rdi == 0x0000000000000000" <BKPT_NO>
Run Code Online (Sandbox Code Playgroud)

会做这项工作。设置断点时还可以指定-c(即--condition)选项。

请注意,对于在寄存器中传递参数的体系结构,lldb 还具有“$arg1”、“$arg2”等。这些只是 ABI 指定的参数传递寄存器的别名,因此,如果您位于函数中间的某个位置,它们将不再保留参数值。但对于在函数开头设置断点,它们可以派上用场。