如何用lldb在iOS模拟器中调用类方法?

问题描述:

我试图调试一个iOS应用程序,我在模拟器中遇到了lldb问题。调用类方法似乎不起作用。实例方法正常工作。如何用lldb在iOS模拟器中调用类方法?

(lldb) po Category 
<no result> 
(lldb) po [Category class] 
error: Couldn't prepare the expression for execution in the target 
(lldb) po self 
(TagsTableViewController *) $5 = 0x085585a0 <TagsTableViewController: 0x85585a0> 

我试过4.3和5.1模拟器,但都显示相同的问题。

在设备上进行调试时,一切正常。

+3

我在想这可能是lldb中的一个bug,但我在此期间找到了一个解决方法。这是有点尴尬,但它的工作原理: 'po [(Class)objc_getClass(“ClassName”)class]' – devioustree 2012-03-27 10:36:52

This works。感谢@devioustree回答了上面的评论。

基本命令的结构是这样的:

po [(Class)objc_getClass("ClassName") class] 

要调用someClassMethodHere

po [[(Class)objc_getClass("ClassName") class] someClassMethodHere] 

添加此对接受的答案扩大...

如果你想给lldb中的一个变量赋一个新的值,就像我一样,而不是只是打印出数值然后做这样的事情......

expr self.myArray = (NSArray*)[[(Class)objc_getClass("NSArray") class] arrayWithObjects:@"valueOne",@"valueTwo",@"etc",nil]