在Objective-C中读取Stacktrace?

时间:2010-05-13 17:59:56

标签: 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] *** 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)是指?

1 个答案:

答案 0 :(得分:6)

这里的堆栈大多没用。这里重要的是

  

-[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0

这意味着-count被发送到字符串。这通常是由内存管理错误引起的。您可以enable NSZombie再次运行程序以查看过度释放的内容。

另外,在Xcode中使用Build→Build and Analyze来静态地找出可能的内存管理错误。