处理隐藏错误的Objective C

5
我们都遇到过明显的错误和复杂的错误。我目前正在编写一个iPad应用程序。有几次,我遇到了非常难以追踪的错误。即使使用了

NSUncaughtExceptionHandler();

还有其他各种错误处理调用。我的问题是,当您尝试了所有明显的技术来跟踪错误,并且您的应用程序因没有明显原因而崩溃时,最好如何继续并使用哪些最佳错误处理技术?

控制台输出

Current language:  auto; currently objective-c
kill
error while killing target (killing anyway): warning: error on line 2184 of    "/SourceCache/gdb/gdb-1708/src/gdb/macosx/macosx-nat-inferior.c" in function "void macosx_kill_inferior_safe()": (os/kern) failure (0x5x)
quit
Program ended with exit code: 0

调试器控制台输出是什么? - Youssef
@ender,恐怕我帮不上太多忙。 - geminiCoder
不确定文件 "/SourceCache/gdb/gdb-1708/src/gdb/macosx/macosx-nat-inferior.c" 是什么。 - geminiCoder
你能够确定程序崩溃的那一行代码吗?你可以在没有调试器的情况下运行应用程序并查看设备日志吗? - Youssef
这是它:http://www.opensource.apple.com/source/gdb/gdb-1128/src/gdb/macosx/macosx-nat-inferior.c - user23743
显示剩余2条评论
2个回答

7
那是调试器崩溃/出错,而不是你的应用程序。 应用程序中无法捕获此类错误。
但是,很可能是您的应用程序中的某些问题导致了调试器的异常行为。
例如,您可能正在破坏或耗尽内存。
此外,请更新到最新的工具版本,因为调试器通常会有错误修复,使其在面对灾难性失败时表现更好。

谢谢bbum。它是Xcode 4.2预览版7。现在我知道为什么它是Beta版了。再次感谢。 - geminiCoder
1
你是否已经提交了带有二进制文件的错误报告?如果没有,请尽快提交。 - bbum
有同样的问题。已经尝试使用Xcode 4.2最终版本,在3个不同的系统上。如果您有解决方法,请评论。 - Ravi_Parmar
解决方法是报告一个错误,确保你删除了派生数据文件夹,如果这仍然失败,修改你的项目以尝试避免这个问题。 - bbum

1
我也遇到了同样的问题,而且没有任何迹象表明有特定的代码行导致了问题 - 最终我发现在我的一个.h文件中有以下代码:
@property (nonatomic, copy) IBOutlet UILabel *dateLabel;

我把“copy”改成了“weak”,问题得到了解决。再改回去重新检查,它绝对是罪魁祸首。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接