如何在函数返回LLDB Python时设置断点?

时间:2017-12-22 20:28:52

标签: python breakpoints lldb

我是LLDB调试器的新手。我想问一下,我们是否有一些方法可以分析源代码并使用Python API自动在函数返回时设置断点?

谢谢。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在“return”上使用源表达式断点:

(lldb) break set -p return -X <FunctionName>

根据您是否在功能的其他地方使用“返回”,您可能需要禁用某些单独的位置。

如果您使用的是使用链接寄存器(例如arm或arm64)的体系结构,并且您在函数中停止了,则可以中断链接寄存器值。

否则,您可以获取函数的反汇编(SBFrame :: GetFunction()将为您提供SBFunction,SBFunction :: GetInstructions将返回指令列表,您可以在返回指令上扫描该设置断点(例如, x86_64上的retq等。

lldb对源代码没有太多的语义理解,但是通过指令扫描或架构知识(如lr ......)实现“从函数返回”断点是有用的。如果你感到有动力,在bugs.llvm.org上提交增强请求,也许有人会实现它。