gpt4 book ai didi

iPhone程序崩溃和编译器显示的堆栈报告完全没有用!

转载 作者:行者123 更新时间:2023-12-03 20:50:02 25 4
gpt4 key购买 nike

大多数时候,当 Iphone 程序崩溃时,编译器会显示堆栈中充满了 no,但这些 no 对我来说没有任何意义。它很少指出问题可能出在哪里,而且大多数都是这些无用的“不”。如何确保当您的程序在开发/测试期间崩溃时,它会显示导致崩溃的位置?

最佳答案

我的 iPhone 开发生活很糟糕,直到我发现 NSZombieEnabled 。通过将此标志添加到可执行文件中,它将让您知道有问题的对象的名称,从而帮助您查看任何内存问题。

这是通过从不实际释放对象来实现的,而是通过将其包装为“僵尸”并在其中设置一个标志来表示它通常会被释放。这样,如果您尝试再次访问它,它仍然知道您犯错误之前的情况,并且通过这一点信息,您通常可以回溯以查看问题所在。

当调试器有时无法获取任何有用信息时,它在后台线程中特别有帮助。

非常重要的是要注意,但是,您需要 100% 确保这仅在您的调试代码中,而不是您的分发代码中。因为没有任何东西被发布,所以你的应用程序将会泄漏、泄漏、泄漏。为了提醒我这样做,我将此日志放入我的应用程序委托(delegate)中:

if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled"))
NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");

关于iPhone程序崩溃和编译器显示的堆栈报告完全没有用!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1444639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com