以编程方式本机崩溃

Kir*_*kov 9 android dalvik android-ndk

是否有一种简单的方法可以使应用程序因本机崩溃而崩溃,以测试本机崩溃报告?

请注意,我正在寻找适用于所有设备的通用解决方案,而不是特定于设备的解决方案。我想过使用Unsafe类(将非法地址写入卡住的),但看起来不支持

fad*_*den 3

如果您想导致 Java 代码崩溃,请使用dalvik.system.VMDebug.crash(). 这不是公共 API 的一部分,因此您需要通过反射来访问它。这对达尔维克来说是有效的;我不知道它是否仍然适用于艺术。

支持某些方法,因此您可能可以通过为诸如 之类的调用sun.misc.Unsafe选择适当的值来导致崩溃。如果偏移量是对象指针的负数,您将取消引用地址零并崩溃。offsetputIntVolatile()

最可靠的方法是使用 NDK 创建一个简单的本机库。我个人喜欢将值存储在“命名”地址中,例如0xdeadd00d,因为它们让您知道这是您的代码故意崩溃的,但空指针解引用也可以工作。