【问题标题】:Reading Stacktrace in Objective-C?在 Objective-C 中阅读 Stacktrace?
【发布时间】:2010-05-13 17:59:55
【问题描述】:

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

有什么方法可以找出 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) 指的是?

【问题讨论】:

    标签: objective-c debugging


    【解决方案1】:

    这里的堆栈几乎是无用的。这里重要的是

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

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

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

    【讨论】:

    • 谢谢,这有帮助。尽管在这种情况下,我确实向没有该选择器的对象发送了 count 消息,但很高兴知道 NSZombie 存在。
    • @yar:哦。不要忽略编译器警告:)。
    猜你喜欢
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    相关资源
    最近更新 更多