Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以输入objective-C for循环作为LLDB表达式?_Objective C_Lldb - Fatal编程技术网

是否可以输入objective-C for循环作为LLDB表达式?

是否可以输入objective-C for循环作为LLDB表达式?,objective-c,lldb,Objective C,Lldb,我看到过传递语句,您可以在LLDB命令中输入复杂语句,如for循环(使用您正在调试的程序的语言-在本例中为Objective-C) 我真的希望能够做到这一点。我从未学习过Python,因此不愿意为了使用可用的Python LLDB支持而花费时间来学习Python,因为一天中没有足够的时间来学习Python。您可以使用expr--…输入Objective-C语句,例如: (lldb) po myArray ( foo, bar ) (lldb) expr -- for (NSString *s

我看到过传递语句,您可以在LLDB命令中输入复杂语句,如for循环(使用您正在调试的程序的语言-在本例中为Objective-C)


我真的希望能够做到这一点。我从未学习过Python,因此不愿意为了使用可用的Python LLDB支持而花费时间来学习Python,因为一天中没有足够的时间来学习Python。

您可以使用
expr--…
输入Objective-C语句,例如:

(lldb) po myArray ( foo, bar ) (lldb) expr -- for (NSString *s in myArray) { (void)NSLog(@"%@", s) ; } 2013-12-03 18:29:03.637 myapp[1373:70b] foo 2013-12-03 18:29:03.639 myapp[1373:70b] bar (lldb)po myArray ( 福, 酒吧 ) (lldb)expr--for(myArray中的NSString*s){(void)NSLog(@“%@”,s);} 2013-12-03 18:29:03.637我的应用程序[1373:70b]foo 2013-12-03 18:29:03.639 myapp[1373:70b]巴 根据"马丁R"的回答,

至少
NSLog
似乎没有打印带有Xcode 6.0.1的内容

(lldb) expr -- for(UIWindow *w in [(UIApplication *)[UIApplication sharedApplication] windows]) { (int)printf("%s\n\n", [(NSString *)[w recursiveDescription] UTF8String]); }

或者,更简单地说,您可以只说(lldb)expr,就可以输入任意多行代码。要结束,请空行并再次按。然后,LLDB将继续计算您键入的任何代码块。但是,我不确定这是否是Python支持的一般替代方案。这两个特性(表达式解析器和脚本)具有不同的原理和用例,是的,在某些情况下,使用什么取决于您,但在其他情况下,使用其中一个更为明显。你到底想达到什么目的?我没法让它发挥作用。我尝试了简单的语句expr--(void)for(int x=0;xok,经过一些修改,我终于让它工作了。我需要在循环中对我的语句进行void转换。下面是我得到的代码:expr for(int x=0;x<5;x++){(void)printf(“x=%d\n”,x);}为什么printf需要void转换,而for循环不需要呢我正在运行的(复杂)语句是for循环。我认为它需要void cast,而不是printf。(在其他新闻中,printf返回int:-)@duncac
expr--for(int x=0;x)