我已经环顾四周,但我似乎不能找到任何地方的信息,所以我想这是不可能的,但我想确定。在使用lldb时,有没有办法跳出循环?(And若否,原因为何?)
dwthyt8l1#
调试信息不会对循环、if分支等源代码结构进行编码。我所使用的所有调试格式都是如此。因此,lldb确实无法实现跳出循环, -它无法知道循环是一个东西。如果可能的话,最简单的方法是将循环检查的条件设置为“停止循环”值,然后在循环外设置断点并继续,此时你所在的迭代将是最后一次迭代。你也可以使用thread jump命令将PC移出循环,从那一点继续。但是使用这个命令要非常小心,因为它很容易跳过一些你可能已经运行过的代码。例如,如果有对象在循环范围内,如果你将PC跳转到循环外的某行,它们不会被破坏。
thread jump
zdwk9cvp2#
如果知道循环结束的line,就可以使用thread until <line>跳出循环。这与在<line>中设置临时断点相同,但只设置一次。
thread until <line>
<line>
2条答案
按热度按时间dwthyt8l1#
调试信息不会对循环、if分支等源代码结构进行编码。我所使用的所有调试格式都是如此。因此,lldb确实无法实现跳出循环, -它无法知道循环是一个东西。
如果可能的话,最简单的方法是将循环检查的条件设置为“停止循环”值,然后在循环外设置断点并继续,此时你所在的迭代将是最后一次迭代。
你也可以使用
thread jump
命令将PC移出循环,从那一点继续。但是使用这个命令要非常小心,因为它很容易跳过一些你可能已经运行过的代码。例如,如果有对象在循环范围内,如果你将PC跳转到循环外的某行,它们不会被破坏。zdwk9cvp2#
如果知道循环结束的line,就可以使用
thread until <line>
跳出循环。这与在
<line>
中设置临时断点相同,但只设置一次。