How to change NSNumber value in XCode while debugging?
我的类有一个成员变量,它是一个NSNumber,如下所示:
1 2 3
| @interface C : NSObject {
NSNumber* _n;
} |
在调试期间,我在断点处停止,我想更改NSNumber的值。 我该怎么做?
我尝试了XCode变量窗口,但这不起作用。
例如,我尝试了XCode调试控制台
但这给出了奇怪的消息错误:从不兼容的类型'NSNumber *'分配'NSNumber *' - 不开玩笑! 试试吧。
我也试过了
1
| expr _n = [NSNumber numberWithInt:1] |
但是这给了同样的东西。
这对我有用:
1 2 3 4
| (lldb) expr -- _n = (NSNumber *)[NSNumber numberWithInt:123]
(NSNumber *) $0 = 0x0000000000007b83 (int)123
(lldb) po _n
(NSNumber *) $1 = 0x0000000000007b83 123 |
需要--来标记命令选项的结束和"原始"输入的开始。
严格来说,这不会更改现有NSNumber的值,但会将新的NSNumber对象分配给_n。 但NSNumber对象是不可变的,因此无论如何都不可能改变它们的值。
-
您是否可以共享有关学习调试器的优秀教程的任何链接?
-
@ JRG-Developer:我必须承认,对我来说,使用新的lldb通常是"尝试和错误"。 但也许这个线程有帮助:stackoverflow.com/questions/12974455/。
-
看起来拳击语法也适用于此。 我试过po @(1.5)并得到(NSNumber *) $1 = 0x000000010054a520 1.5
-
@nielsbot:我只尝试了@123,这在调试器中不起作用。 所以感谢您的反馈,如果您对此感到满意,我可以将其添加到答案中。
-
当然,我不介意。 我只是假设括号是必需的 - 我从未使用任何其他语法。
-
@nielsbot:po @(1.5)在调试器中工作,但是使用expr -- _n = @(1.3)分配变量会产生语法错误。
-
我甚至更奇怪:expr _n = @(1.5)给出了error: assigning to NSNumber * from incompatible type NSNumber *
-
@nielsbot:是的,这就是我的意思。 错误信息非常奇怪,它与OP在他的问题中已经观察到的相同。
-
是的,当然..哎呀!
-
这是lldb.llvm.org/tutorial.html上的LLDB教程
尝试使用此行: