【问题标题】:Easiest way to cause SIGSEGV (native crash) on Android?在Android上导致SIGSEGV(本机崩溃)的最简单方法?
【发布时间】:2014-07-24 19:19:23
【问题描述】:

我想确认 android 应用程序上的 3rd 方库工作正常并捕获所有本机崩溃/报告它们。

令人惊讶的是,我找不到任何方法来做到这一点。在 Android 上执行此操作的最简单和最快的方法是什么? (理想情况下,可通过按下按钮触发)。

即在 C 上你可以做

int main(void)
{
    char *s = "hello world";
    *s = 'H';
}

这很简单。 Android 中的等价物是什么?

**编辑:在 Android APPLICATION 代码中。不使用本机代码。

【问题讨论】:

  • 您可以附加 ndk-gdb 调试器并使用它来注入故障条件吗? stackoverflow.com/questions/10534367/…
  • 我不确定它是如何运作的。您愿意在答案中更详细地解释它吗?我必须安装一些库吗?
  • 我从来没有做过原生开发,所以我真的帮不了你。 ndk-gdb 是一个调试器,它在概念上类似于您用于 Java 开发的调试器,但是您必须自己弄清楚或让其他人解释它,对不起。
  • 恐怕没有记录在案的方式。 Java旨在防止这些。也许通过反射来操作系统类的私有字段......

标签: android segmentation-fault


【解决方案1】:

如果您查看bionic/libc/unistd/abort.c,它会执行以下操作来触发段错误

*((char*)0xdeadbaad) = 39;

【讨论】:

  • 如何从 Android 应用层代码访问这个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 2020-03-23
  • 1970-01-01
相关资源
最近更新 更多