(lldb) - 如何暂停应用程序并在实际 运行 UIViewController 处进行调试
(lldb) - How pause an application and debug at the actual running UIViewController
我是 lldb
调试的新手,希望你能帮助我 :)
基本上我想表达一些功能,例如
(lldb) expr device.up()
(lldb) expr device.down()
在模拟器上观察 UI 的变化行为。 (很多动画..)
我可以在 UIViewController
处设置断点,然后键入命令来实现此目的。但是再次按下开始后,它会等待委托,我只能手动暂停它以再次获取调试控制台。我的问题来了:当我暂停应用程序时,是否可以在与之前设置断点的相同环境(特定的活动 UIViewController
)中进行调试?
很高兴收到您的提示和 lldb 经验,如果我的问题不清楚,请写信给我! :)
如果您在其中计算表达式的堆栈帧仍在堆栈中的某处,您可以select那个线程和帧:
(lldb) thread 5
(lldb) frame 7
然后运行表达式。如果框架不再在堆栈中,则不能这样做。如果你正在评估的表达式引用局部变量,你将无法恢复它们,它们占用的内存已经消失。
但是您可以将值存储在 lldb 便利变量中。例如,如果您使用的是 C++,并且 "device" 是对类型 SomeType
对象的引用,您可以这样做:
(lldb) expr SomeType *$reference_to_device = &device
然后你可以做:
(lldb) expr $reference_to_device->up()
捕获地址不会使对象保持活动状态,但是,您的程序中的实际内容必须这样做。
我是 lldb
调试的新手,希望你能帮助我 :)
基本上我想表达一些功能,例如
(lldb) expr device.up()
(lldb) expr device.down()
在模拟器上观察 UI 的变化行为。 (很多动画..)
我可以在 UIViewController
处设置断点,然后键入命令来实现此目的。但是再次按下开始后,它会等待委托,我只能手动暂停它以再次获取调试控制台。我的问题来了:当我暂停应用程序时,是否可以在与之前设置断点的相同环境(特定的活动 UIViewController
)中进行调试?
很高兴收到您的提示和 lldb 经验,如果我的问题不清楚,请写信给我! :)
如果您在其中计算表达式的堆栈帧仍在堆栈中的某处,您可以select那个线程和帧:
(lldb) thread 5
(lldb) frame 7
然后运行表达式。如果框架不再在堆栈中,则不能这样做。如果你正在评估的表达式引用局部变量,你将无法恢复它们,它们占用的内存已经消失。
但是您可以将值存储在 lldb 便利变量中。例如,如果您使用的是 C++,并且 "device" 是对类型 SomeType
对象的引用,您可以这样做:
(lldb) expr SomeType *$reference_to_device = &device
然后你可以做:
(lldb) expr $reference_to_device->up()
捕获地址不会使对象保持活动状态,但是,您的程序中的实际内容必须这样做。