有没有一种简单的方法可以让应用程序崩溃并发生 native 崩溃,以便测试 native 崩溃报告?
请注意,我正在寻找适用于所有设备的通用解决方案,而不是特定于设备的解决方案。想过用Unsafe类(把非法地址写入卡住),但是貌似不支持
最佳答案
如果要从 Java 代码引起崩溃,请使用 dalvik.system.VMDebug.crash()
.这不是公共(public) API 的一部分,因此您需要通过反射来访问它。这对 Dalvik 有效;我不知道它是否仍然适用于艺术。
某些 sun.misc.Unsafe
方法是受支持的,因此您可以通过在调用中为 offset
选择适当的值来导致崩溃,例如 putIntVolatile()
。如果偏移量是对象指针的否定,您将取消引用地址零并崩溃。
最可靠的方法是使用 NDK 创建一个简单的本地库。我个人喜欢将值存储在“命名”地址中,例如 0xdeadd00d
,因为它们让您知道这是您的代码故意崩溃,但空指针 derefs 也有效。
关于android - 以编程方式 native 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31168264/