Android 有没有办法在应用程序崩溃时进行内存转储?

Android 有没有办法在应用程序崩溃时进行内存转储?,android,Android,我正忙于编写一个应用程序,我注意到它有时会崩溃,当它崩溃时,我回到我的计算机,然后我只有堆栈跟踪 有没有办法让我在崩溃时对应用程序进行内存转储 谢谢,不是内存转储,但是ACRA(Android应用程序崩溃报告)非常擅长记录正在发生的事情的信息。最详细的信息是堆栈跟踪 调试信息本身可能没有太大的帮助,但您可以修改他们的代码,以便在应用程序崩溃时发送logcat,这样您就可以获得更多关于发生了什么的详细信息。我认为出于隐私/安全原因,默认情况下他们不会这样做,但在崩溃前后查看日志更有用 除此之外,还

我正忙于编写一个应用程序,我注意到它有时会崩溃,当它崩溃时,我回到我的计算机,然后我只有堆栈跟踪

有没有办法让我在崩溃时对应用程序进行内存转储


谢谢,不是内存转储,但是ACRA(Android应用程序崩溃报告)非常擅长记录正在发生的事情的信息。最详细的信息是堆栈跟踪

调试信息本身可能没有太大的帮助,但您可以修改他们的代码,以便在应用程序崩溃时发送logcat,这样您就可以获得更多关于发生了什么的详细信息。我认为出于隐私/安全原因,默认情况下他们不会这样做,但在崩溃前后查看日志更有用

除此之外,还需要使用调试器对其进行调试

有没有办法让我在崩溃时对应用程序进行内存转储


我不知道——对不起

如果调用android.os.Debug.dumpHprofData(字符串文件名),您可以捕获一个可以使用jhat或MAT查看的HPROF转储。您需要以某种方式捕获异常(尝试/catch或指定您自己的全局默认异常处理程序),如果要写入/sdcard,则需要具有写入外部存储权限


另请参见。

谢谢,这应该很有用,尽管不是内存转储:)您可以查看字符串、对象中字段的值等。您想要什么没有提供?它接近完全转储,但是您无法执行将其加载到内存并继续运行等操作。(除非我弄错了)啊。这需要保存Linux进程的完整状态,因为应用程序可能取决于从本机代码分配的资源,或者与未连接到VM的线程交互。还需要有一种方法将进程重新连接到应用程序框架IPC,重新分配任何系统资源,等等。您需要转储超过内存才能重新启动它。通过在崩溃时调用android.os.Debug.waitForDebugger(),然后在稍后附加一个调试器,您可以获得大部分方法。(这可能会触发ANR探测器。)是的,我找不到关于这件事的任何信息。添加到SDK是一件好事,也许3.0:Plogcat将在下一版本中添加到ACRA,如果READ_LOGS权限可用。还有很多,所以很抱歉,您还得再等几个星期;-)