一步一步,直到循环在lldb中完成

时间:2018-04-26 03:10:18

标签: lldb

有没有办法继续,直到循环在lldb完成?我正在寻找finish的模拟,但它没有跳出堆栈帧,而是跳出循环。

for (int i = 0; i < 10000000; i++) {
    ...
    //say I'm here 
}
//and I want to go here.  

1 个答案:

答案 0 :(得分:2)

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

所以它没有办法为你处理这种操作。

您可以手动完成此操作。一种方法是设置临时断点并在那里运行。例如,如果“我想要去这里”声明是第25行,你可以说:

(lldb) break set -o -l 25
(lldb) c

另一个捷径是:

(lldb) thread until 25

thread until优于设置临时断点并继续它还为当前函数的返回提供了一个支持,所以如果你错过了循环返回的事实(或 - shivers - 一个goto。 ..)某个地方我们会在函数退出时停止而不是继续。