为啥崩溃会随着“僵尸对象”而消失?
Posted
技术标签:
【中文标题】为啥崩溃会随着“僵尸对象”而消失?【英文标题】:Why do the crash disappear with "zombie objects"?为什么崩溃会随着“僵尸对象”而消失? 【发布时间】:2016-05-18 04:00:44 【问题描述】:我的应用程序在没有任何信息的情况下崩溃,然后我打开 zombie objects 和 malloc scribble 并尝试捕捉故障点。 但它不会再因僵尸对象而崩溃。当我关闭 zombie objects 和 malloc scribble 时,崩溃再次发生。 我怎样才能抓住故障点?有什么想法吗?
【问题讨论】:
我确信这将有助于解释有关崩溃的一些信息——它是否可重复、是否响应用户输入等等。 提示:我正在测试当我在我的应用程序中接听电话时会发生什么。 当你打开僵尸时,由悬空指针导致的应用程序崩溃被一个很好的调试器消息替换,显示使用了悬空指针。您是说调试控制台中没有任何错误告诉您有关访问僵尸对象的信息吗?这在某种程度上破坏了问题出自悬空指针的假设,但它可能是其他问题。所以,(a) 请确认您确实没有看到任何消息是僵尸; (b) 告诉我们为什么你认为你有悬空指针。堆栈跟踪和有关崩溃的更多技术信息会有所帮助。 【参考方案1】:崩溃是由一个“悬空指针”引起的——一个对象在它被释放后发送给它。
但随着僵尸的开启,不会释放任何对象。这就是为什么他们被称为僵尸!所以没有悬空指针;相反,所有对象都泄漏了。泄漏不会导致崩溃,并且没有悬空指针,因此崩溃消失了。
重点是让您有机会了解如果您不使用僵尸,当对象会被释放时,您正在向哪个对象发送消息。
【讨论】:
以上是关于为啥崩溃会随着“僵尸对象”而消失?的主要内容,如果未能解决你的问题,请参考以下文章
为啥设置“可见性:隐藏”时表格单元格边框在谷歌浏览器中消失和“边界崩溃:崩溃;”?
Dash Plotly中的烛台图和折线图,它会随着回调而更新,但会消失