我是LLDB调试器的新手。我想问一下,我们是否有一些方法可以分析源代码并使用Python API自动在函数返回时设置断点?
谢谢。
答案 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上提交增强请求,也许有人会实现它。