在lldb中跳过,直到循环完成

在lldb中跳过,直到循环完成,lldb,Lldb,是否有方法继续,直到循环在lldb中完成?我正在寻找一个类似于finish,但它不是跳出堆栈帧,而是跳出循环 for (int i = 0; i < 10000000; i++) { ... //say I'm here } //and I want to go here. for(int i=0;i

是否有方法继续,直到循环在lldb中完成?我正在寻找一个类似于
finish
,但它不是跳出堆栈帧,而是跳出循环

for (int i = 0; i < 10000000; i++) {
    ...
    //say I'm here 
}
//and I want to go here.  
for(int i=0;i<10000000;i++){
...
//说我在这里
}
//我想去这里。

调试器没有足够的信息来识别循环或其他类似的流控制概念。它们不会反映在调试信息中,调试器也不知道如何以最初构建的方式编译源代码(包括正确定义所有#以及镜像实际使用的编译器版本的代码生成特性)它需要这样做才能忠实地从源文本映射到指令

因此,它没有任何方法来为您处理此类操作

你可以手工做这个。一种方法是设置一个临时断点并在那里运行。例如,如果“我想去这里”语句是第25行,您可以说:

(lldb) break set -o -l 25
(lldb) c
另一条捷径是:

(lldb) thread until 25
thread-until
比设置临时断点并继续具有优势,因为它还为当前函数的返回提供了一个后盾,因此如果您错过了循环在某个地方返回(或-shivers-a goto…)的事实,我们将在函数退出时停止,而不仅仅是继续