【发布时间】:2018-04-26 03:10:18
【问题描述】:
有没有办法继续直到循环在 lldb 中完成?我正在寻找finish 的类似物,但它不是跳出堆栈帧,而是跳出循环。
for (int i = 0; i < 10000000; i++) {
...
//say I'm here
}
//and I want to go here.
【问题讨论】:
标签: lldb
有没有办法继续直到循环在 lldb 中完成?我正在寻找finish 的类似物,但它不是跳出堆栈帧,而是跳出循环。
for (int i = 0; i < 10000000; i++) {
...
//say I'm here
}
//and I want to go here.
【问题讨论】:
标签: lldb
调试器没有足够的信息来识别循环或其他类似的流控制概念。它们没有反映在调试信息中,并且调试器不知道如何按照最初构建的方式编译源代码(包括正确设置所有#defines 并反映您编译器版本的代码生成特性实际使用),它需要做的就是从源文本忠实地映射到指令。
所以它没有办法为你处理这种操作。
您可以手动完成。一种方法是设置一个临时断点并在那里运行。例如,如果“我想去这里”语句是第 25 行,你可以说:
(lldb) break set -o -l 25
(lldb) c
另一个捷径是这样做:
(lldb) thread until 25
thread until 比设置一个临时断点并继续它的优势在于它还在当前函数的返回上设置了一个支持,所以如果你错过了循环返回的事实(或者 - 颤抖 - 一个 goto... ) 当函数退出而不是继续时,我们会在某个地方停下来。
【讨论】: