我是LLDB调试器的新手。我想问一下,我们是否有一些方法来分析源代码并使用Python API自动设置函数返回的断点?
谢谢。
一种方法是在“return”上使用源表达式断点:
(lldb) break set -p return -X <FunctionName>
根据您是否在函数的其他位置使用“返回”,您可能必须禁用某些单独的位置。
如果您使用的是使用链接寄存器(例如arm或arm64)的体系结构,并且您在函数中停止,则可以中断链接寄存器值。
否则,您可以获取函数的反汇编(SBFrame :: GetFunction()将为您提供SBFunction,SBFunction :: GetInstructions将返回指令列表,您可以在返回指令上扫描该设置断点(例如retq等) 。在x86_64上)。
lldb对源代码没有太多的语义理解,但是通过指令扫描或架构知识(如lr ......)实现“从函数返回”断点是有用的。如果你有动力,请提交增强功能在bugs.llvm.org请求,也许有人会实现它。