如何使用 LLDB 进入最外层函数调用?

How to step-into outermost function call in the line with LLDB?

假设我正在调试这样的代码

   outer(fn1(), fn2());

如果我使用s命令,LLDB会先进入fn1,然后我输入fin退出,s再次进入fn2, fin... 直到现在我才能够进入 outer 这正是我从一开始就想要的。

有没有办法告诉 LLDB 在哪个函数调用上介入?

直接没有。 但是你可以在外部函数的定义中设置一个断点。

thread step-in --step-in-target outer 或更简洁地说,s -t outer 将在进入 outer 时停止。有关文档,请参阅 help s

lldb 附带了一个别名:sif。在给定的示例中,您可以 运行:

(lldb) sif outer

你可以把它记成 step into function

它适用于部分匹配,不必使用完整的函数名称调用。在这种情况下,您也可以 运行 sif out 例如。