【问题标题】:iPhone - how to find what object is it referring?iPhone - 如何找到它指的是什么对象?
【发布时间】:2011-03-07 05:56:56
【问题描述】:

Xcode 在消息中显示对象地址有什么意义

[CALayer retain]:消息发送到已释放实例 0x1bc320

如果发生这种情况时你找不到 0x1bc320 是哪个对象?

每次我看到类似的东西时,我都会在调试器中搜索我能找到的所有对象,但我从来没有找到错误消息中它所指的对象。

只是说这不是合乎逻辑吗 [CALayer retain]:消息发送到解除分配的实例。

当这种情况发生时,有什么方法可以找到对象吗?我可以在控制台上输入什么?

谢谢

【问题讨论】:

    标签: iphone xcode debugging


    【解决方案1】:

    只需输入po 0x1bc320。您还可以在启用 NSZombie 跟踪的 Instruments 中使用分配跟踪。这将停止应用程序并向您显示僵尸对象的完整生命周期以及在释放后调用它的人。

    【讨论】:

    • 在这种情况下我总是启用 NSZombie,但这从来没有帮助。我已经尝试输入您所说的内容,这是消息:** - [CALayer respondsToSelector:]: message sent to deallocated instance 0x1bc320 Program received signal SIGTRAP, Trace/breakpoint trap。 forwarding () 中的 0x35823910 正在调试的程序在从 GDB 调用的函数中发出信号。 GDB 已将上下文恢复到调用前的状态。要更改此行为,请使用“set unwindonsignal off”对包含函数 (_NSPrintForDebugger) 的表达式的评估将被放弃。
    • 我强烈建议您阅读如何使用 Instruments。这里解释起来有点复杂,但是如果你将对象分配工具添加到你的运行中,打开它的设置并启用“NSZombie 检测”你会明白我的意思(假设你知道如何使用工具来遍历对象的生命周期和所有这些)。
    • 在哪里输入 po 0x1bc320?
    • Xcode 中的 gdb(调试器)控制台或命令行(取决于您从何处运行它)。
    • $0 = 174104656 [no Objective-C description available] 是我的错误“2014-04-22 20:56:56.137 SalesApp[3174:19d03] *** -[UIViewAnimationContext respondsToSelector: ]: message sent to deallocated instance 0xa60a050"--这是什么意思?
    猜你喜欢
    • 2011-06-24
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多