什么是 lldb 的 gdb 高级命令的等价物?

What is lldb's equivalent one of gdb's advance command?

在调试C/C++这个参数很多的函数时,每个参数可能还会调用一些函数,不得不重复输入stepfinish,然后到达这里函数的主体部分。

例如我正在使用 OpenCV 的 solvePnP() 函数,它需要很多参数:

    solvePnP(v_point_3d,v_point_2d,K,D,R,T);

其中,每个参数都会从cv::Mat转换为cv::InputArray,从而调用一个init()函数。

我所期望的是,直接转到solvePnP()实现的地方,我对每个参数类型转换都不感兴趣。

幸运的是,gdb 中有 advance 命令。官方文档是here,写着:

advance location

Continue running the program up to the given location. An argument is required, which should be of one of the forms described in Specify Location. Execution will also stop upon exit from the current stack frame. This command is similar to until, but advance will not skip over recursive function calls, and the target location doesn’t have to be in the same frame as the current one.

这个 gdb advance 命令真的很有帮助。 LLDB 中的等效命令是什么?

我在lldb官方的gdb => lldb命令映射网页中搜索过,https://lldb.llvm.org/use/map.html,没有找到


编辑:我忘了说,我的 gdb 用法是

(gdb) b main
(gdb) r
(gdb) advance solvePnP

检查 lldb 的 sif 命令。 sif 表示 **Step Into Function

参考:

要获得LLDB支持的所有命令,首先进入lldb命令,然后输入help,然后会有sif的解释:

sif -- Step through the current block, stopping if you step directly into a function whose name matches the TargetFunctionName.