android - 以编程方式 native 崩溃

标签 android android-ndk dalvik

有没有一种简单的方法可以让应用程序崩溃并发生 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/

相关文章:

java - 在 Android 手机上模拟低 RAM

Android Marquee TextView 可点击链接

android - libgdx - Assets 文件在 .apk 中翻倍

java - 如何在某个命令后等待响应?

安卓触摸屏尺寸

c++ - 在 Android 6.0 上加载 protobuf-lite.so 时,如何修复 Android NDK 应用程序因 UnsatisfiedLinkError 崩溃?

java - 为什么同一个静态字段在dalvik中有两个不同的id?

android - WindowManagerGlobal的setStoppedState内的IndexOutOfBoundsException

c++ - ReleaseFloatArrayElements 和 DeleteLocalRef 有什么区别

java - Android 4.4.4,创建大量字节数组时,垃圾收集器如何处理?