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

在Xcode中调试时如何更改NSString值?,xcode,debugging,Xcode,Debugging,当我在Xcode中的断点处停止时,我可以看到NSString变量的值。我怎样才能改变它们?我可以更改int或double变量,但不能更改NSString。您可以在调试控制台中执行此操作。假设您有NSString*myVar。在控制台中,在(gdb)之后,键入设置myVar=@“我的新字符串”。如果您使用的是(lldb),则使用等效表达式expr myVar=@“我的新字符串” 这可能无法在变量面板中正确显示,但您可以通过在控制台中输入po myVar来验证该值。您的代码应该拾取新值 有关使用ex

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

您可以在调试控制台中执行此操作。假设您有
NSString*myVar
。在控制台中,在
(gdb)
之后,键入
设置myVar=@“我的新字符串”
。如果您使用的是
(lldb)
,则使用等效表达式
expr myVar=@“我的新字符串”

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


有关使用
expr
的一些重要信息,请查看您可以,但必须从调试器命令提示符调用代码。 例如,假设您在这一行之后有一个断点触发:

NSString *myString = @"My current string";
然后在(gdb)提示符处键入:

call myString = @"My new string"
您可以在更改字符串之前和之后
po myString
,以验证它是否已更改

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

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

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

对于N错误,我使用以下命令:

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

()上面n8tr的评论说明了如何做到这一点。您只需在分配任务之前加上“po”,如:po myString=@“my_new_string”和po self.title=@“new title”。

在XCode 4.3.1中使用(lldb)时,这对我不起作用。我得到了关于“对'id'的引用不明确”和“解析表达式时出现1个错误”的错误。您遇到的是XCode 4.3.x中一个已知错误的变体。看见根据答案,在XCode 4.4中,使用expr whateverVariable=@“55fc633a22570e2b7e00003b”解决了这个问题。它的工作量大致相同:NSString*whateverVariable=@“55fc633a22570e2b7e00003b”;在代码本身中。我的答案是旧的。你现在可以这样做了:po myString=@“my_new_string”和po self.title=@“new title”在1987年,我们可以在所有真正的调试器中轻松地使用相当于Xcode的“Edit Value…”。现在我们只能编写调试器代码了。。。回到未来。。。