我正在尝试编写一些基本代码,以便在不使用第三方库的情况下使用Swift 3.0捕获iOS 10+中的崩溃。
我找到了以下功能:
// Capturing exceptions
NSSetUncaughtExceptionHandler { exception in
print("Exception: \(exception.name) \(exception.reason!)\(exception.description)")
print(exception.callStackSymbols)
}
// Capturing other crashes - **is this enough ????**
// I wrote these in application didFinishLaunchingWithOptions method, but these don't get called.
signal(SIGABRT) {(a) in
print(a)
}
signal(SIGABRT){(a) in
print(a)
}
signal(SIGILL){(a) in
print(a)
}
signal(SIGSEGV){(a) in
print(a)
}
signal(SIGFPE){(a) in
print(a)
}
signal(SIGBUS){(a) in
print(a)
}
signal(SIGPIPE){(a) in
print(a)
}
1 - 这些方法是否足够?
2 - 如果是这样,我应该在哪里召唤他们捕捉崩溃?
为了触发崩溃,我在ViewDidLoad中编写了以下方法,该方法是项目中唯一的ViewController对象:
但是,此方法为我提供了 EXC_BREAKPOINT ,而不是上面的崩溃之一。
3 - 如何以编程方式捕获 EXC_BREAKPOINT ?
4 - 还有其他方法可以尝试触发崩溃吗?
答案 0 :(得分:0)
你知道iOS有TestFlight,你可以从Apple的网站上为你的应用程序崩溃吗?
如果您出于教育目的这样做很好,但除此之外,您不需要编写崩溃处理代码。
如果您只是为了好玩而这样做,我认为您的困惑来自于EXC_BREAKPOINT是CPU异常,而不是ObjC异常。这些是使用标准的Unix信号处理程序提供给您的应用程序的,因此您必须使用它。