LLDB Python API C代码调用函数

LLDB Python API call function in C code

例如,在编写 GDB 宏时,我可以给出如下内容:

list_iterate $arg0

如果 C 代码中的 list_iterate() 函数看起来像

list_iterate(list_node *)

在 LLDB Python API 中,我如何做同样的事情,即从 C 代码调用和执行一个函数?我已经搜索了文档,但似乎找不到这样的东西

SBFrame::EvaluateExpression就是你要的功能。类似于:

(lldb) script
>>> options = lldb.SBExpressionOptions()
>>> result = lldb.frame.EvaluateExpression('printf("Hello there.\n");', options)
Hello there.
>>> print result
(int)  = 13

注意,如果您正在编写脚本(或Python命令等),请不要使用lldb.frame,您可以从您的进程中获取选定的帧,或者如果您正在编写一个命令使用通过 SBExecutionContext 传递的形式。参见:

https://lldb.llvm.org/use/python-reference.html

了解更多详情。