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