如何在Xcode中调试时更改NSString值?

时间:2011-02-01 02:02:45

标签: xcode debugging

当我在Xcode的断点停止时,我可以看到NSString变量的值。我怎样才能改变它们?我可以更改int或double变量,但不能更改NSString。

4 个答案:

答案 0 :(得分:82)

您可以在调试控制台中执行此操作。假设你有NSString* myVar。在控制台中,在(gdb)之后,键入set myVar = @"My new string"。如果您使用(lldb),请改用等效表达式expr myVar = @"My new string"

这可能无法在变量面板中正确显示,但您可以通过在控制台中输入po myVar来验证该值。您的代码应该获取新值。

有关使用expr的一些重要信息,请查看this StackOverflow post.

答案 1 :(得分:7)

您可以但必须从调试器命令提示符调用代码。 例如,假设您在此行之后有一个断点:

NSString *myString = @"My current string";

然后在(gdb)提示符下键入:

call myString = @"My new string"

您可以在更改字符串之前po myString更改字符串以确认其已更改。

另一个例子:假设您想要更改视图控制器的标题。你可以使用setter。 *注意:调试器命令行不支持点表示法。例如,让视图加载,然后在视图控制器的生命周期内的某处设置断点。然后这样做:

call (id)[self setTitle:@"New Title"]

继续运行程序,您应该会看到视图控制器的标题更新。

答案 2 :(得分:2)

对于NSError,我使用的是:

(lldb) expression aTempError = (NSError*)[[NSError alloc] initWithDomain:@"MANO" code:1 userInfo:nil]

答案 3 :(得分:1)

https://stackoverflow.com/users/1202867/n8tr)n8tr上面的评论显示了如何做到这一点。您只需在作业之前使用" po"像这样:po myString = @" my_new_string"和po self.title = @"新标题"。