什么是 lldb 的 gdb 高级命令的等价物?
What is lldb's equivalent one of gdb's advance command?
在调试C/C++这个参数很多的函数时,每个参数可能还会调用一些函数,不得不重复输入step
和finish
,然后到达这里函数的主体部分。
例如我正在使用 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.
在调试C/C++这个参数很多的函数时,每个参数可能还会调用一些函数,不得不重复输入step
和finish
,然后到达这里函数的主体部分。
例如我正在使用 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.