我想要在现场测试我的应用程序的崩溃报告,当用户执行一个真正的用户不太可能无意中做的特定操作时,故意让它崩溃。
但是,有什么可靠的好方法可以让应用程序崩溃,而不会在编译时产生警告呢?
编辑:请注意,这个问题的许多看似显而易见的答案都会导致异常,这些异常会被Cocoa捕获,因此不会导致应用程序崩溃。
发布于 2012-11-22 18:36:47
在Objective-C中,直接使用C会导致错误访问
strcpy(0, "bla");
注意:虽然这可以在我所知道的任何系统上运行--在未来版本的C运行时或编译器中,这可能不会再导致崩溃。参见)
(在swift中,你必须桥接到objC才能做到这一点)
发布于 2012-11-22 18:39:00
我现在最喜欢的:
assert(! "crashing on purpose to test <insert your reason here>");
一个经典的例子:
kill( getpid(), SIGABRT );
和一些pr0n:
*(long*)0 = 0xB16B00B5;
它们都会生成我的崩溃报告工具所捕获的崩溃。
发布于 2012-11-23 12:14:20
因为我们都使用Clang for iOS,所以这是相当可靠的:
__builtin_trap();
这样做的好处是它就是为这个目的而设计的,所以它不应该生成任何编译器警告或错误。
https://stackoverflow.com/questions/13510584
复制相似问题