有没有办法继续直到 lldb 中的循环完成?我正在寻找一个类似的东西,finish但它不是跳出堆栈帧,而是跳出循环。
for (int i = 0; i < 10000000; i++) {
...
//say I'm here
}
//and I want to go here.
Run Code Online (Sandbox Code Playgroud)
调试器没有足够的信息来识别循环或其他类似的流控制概念。它们没有反映在调试信息中,并且调试器不知道如何按照最初构建的方式编译源代码(包括正确使用所有 #define 并镜像您所使用的编译器版本的代码生成特性)实际使用)需要这样做才能从源文本忠实地映射到指令。
所以它没有任何方法来为你处理这种操作。
您可以手动完成此操作。一种方法是设置一个临时断点并在那里运行。例如,如果“我想去这里”语句是第 25 行,您可以说:
(lldb) break set -o 1 -l 25
(lldb) c
Run Code Online (Sandbox Code Playgroud)
另一个捷径是:
(lldb) thread until 25
Run Code Online (Sandbox Code Playgroud)
thread until与设置临时断点并继续相比,它的优点是它还在当前函数的返回上设置了一个后停止,因此,如果您错过了循环执行返回(或 - 颤抖 - 转到...)的事实,我们将在某个地方停止当函数退出而不是继续运行时。