【问题标题】:Handle SIGSEGV Like Signals in Objective C在 Objective C 中处理类似 SIGSEGV 的信号
【发布时间】:2013-10-30 06:28:00
【问题描述】:

我在我的应用程序中遇到了 SIGSEGV 异常,并且我的应用程序正在崩溃。我想处理这些信号,以便我的应用程序不会在运行时崩溃,而是处理这些异常,以便应用程序顺利运行。

我在我的应用程序中使用 ARC,我也没有处理 release 或 retain 语句,现在我很难找出应用程序为什么要访问它无法访问或无效内存的内存。

此外,应用程序一直在崩溃,这种情况很少发生,在 20 个会话中它只发生 1 到 2 次,但问题就在那里,而且非常烦人。

【问题讨论】:

  • 正确的做法是在发布前调试和修复错误。使用 Zombies 工具查找在释放后向对象发送消息的情况。使用静态分析器来识别 ARC 无法处理的情况(例如 Core Foundation)的内存管理错误。

标签: ios objective-c memory


【解决方案1】:

SIGSEGV 是分段错误。获得一个之后,您的应用程序无法顺利运行。实际上,您的应用程序根本无法继续运行。

您可以使用信号处理程序来处理信号,如下所示

// register a signal handler
signal(SIGSEGV, SignalHandler);

static void SignalHandler (int signo) {
     //...
}

但这不会阻止您的应用程序崩溃。

【讨论】:

  • 但是使用open()write()close()将调用堆栈写入日志文件是完全可以的,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 2011-09-23
  • 2011-01-29
  • 1970-01-01
相关资源
最近更新 更多