(lldb) - 如何在实际运行的UIViewController

时间:2017-05-17 15:35:12

标签: ios swift xcode lldb

我是lldb调试的新人,希望你能帮助我:)。

基本上我想表达一些功能,例如

(lldb) expr device.up()
(lldb) expr device.down()

观看模拟器上UI的变化行为。 (很多动画..)

当我在UIViewController设置断点时,我可以实现这一点,然后输入命令。但是再次按下start后它会等待一个委托,我只能手动暂停它以再次获得调试控制台。我的问题出现了:当我暂停应用程序时,是否有可能在与设置断点之前相同的环境(特定的,活动UIViewController)进行调试?

我很高兴你的提示和经验,如果我的问题不清楚,请写信! :)

1 个答案:

答案 0 :(得分:1)

如果你正在评估表达式的堆栈帧仍然在某个堆栈上,你可以选择该线程&帧:

(lldb) thread 5
(lldb) frame 7

然后运行表达式。如果框架不再在堆栈上,则无法执行此操作。如果您正在评估的表达式引用局部变量,则您无法恢复它们,它们占用的内存消失了。

但是您可以将值存储在lldb便利变量中。例如,如果您使用的是C ++和" device"是对SomeType类型对象的引用,您可以这样做:

(lldb) expr SomeType *$reference_to_device = &device

然后你可以这样做:

(lldb) expr $reference_to_device->up()

捕获地址并不会使对象保持活着状态,但是,程序中实际存在的东西必须这样做。