在Objective-C中阅读Stacktrace?
我不太喜欢实时调试,但如果有必要,我会做的 有没有办法弄清楚Objective-C中StackTrace所指的代码行是什么?它所指的变量如何?例如:在Objective-C中阅读Stacktrace?,objective-c,debugging,Objective C,Debugging,我不太喜欢实时调试,但如果有必要,我会做的 有没有办法弄清楚Objective-C中StackTrace所指的代码行是什么?它所指的变量如何?例如: 2010-05-13 19:39:11.673 Thingers[21003:207] *** -[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0 2010-05-13 19:39:11.674 Thingers[21003:207] *** Terminati
2010-05-13 19:39:11.673 Thingers[21003:207] *** -[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0
2010-05-13 19:39:11.674 Thingers[21003:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0'
2010-05-13 19:39:11.675 Thingers[21003:207] Stack: (
29303899
...
11130
)
我知道我们在谈论向没有它的东西发送
count
消息(可能是NSCFString?),但是有没有办法弄清楚对该实例的命名引用(0x3b0ebb0)指的是什么?这里的堆栈基本上是无用的。这里重要的是
-[NSCFString count]:无法识别的选择器发送到实例0x3b0ebb0
这意味着-count
被发送到字符串。这通常是由内存管理错误引起的。您可以重新启动并运行该程序,以查看过度发布的内容
另外,使用Build→ 在Xcode中构建和分析,以静态方式找出可能的内存管理错误。谢谢,这很有帮助。虽然在这种情况下,我实际上是在向一个没有选择器的对象发送一条
count
消息,但知道NSZombie存在还是很好的。@yar:Oh。不要忽略编译器警告:)。