在Objective-C中读取Stacktrace?

Dan*_*ark 3 debugging objective-c

我不喜欢实时调试,但如果有必要,我会这样做.

有没有办法弄清楚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
)
Run Code Online (Sandbox Code Playgroud)

我看到我们正在讨论向count没有它的东西发送消息(也许它是一个NSCFString?),但有没有办法弄清楚该实例的命名引用(0x3b0ebb0)是什么?

ken*_*ytm 6

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

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

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

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