Merge "Stop profiling on uncaught exception."

This commit is contained in:
Tobias Thierer
2016-08-03 10:42:37 +00:00
committed by Gerrit Code Review
2 changed files with 17 additions and 0 deletions

View File

@@ -4294,6 +4294,16 @@ public final class ActivityThread {
} }
} }
/**
* Public entrypoint to stop profiling. This is required to end profiling when the app crashes,
* so that profiler data won't be lost.
*
* @hide
*/
public void stopProfiling() {
mProfiler.stopProfiling();
}
static final void handleDumpHeap(boolean managed, DumpHeapData dhd) { static final void handleDumpHeap(boolean managed, DumpHeapData dhd) {
if (managed) { if (managed) {
try { try {

View File

@@ -86,6 +86,13 @@ public class RuntimeInit {
Clog_e(TAG, message.toString(), e); Clog_e(TAG, message.toString(), e);
} }
// Try to end profiling. If a profiler is running at this point, and we kill the
// process (below), the in-memory buffer will be lost. So try to stop, which will
// flush the buffer. (This makes method trace profiling useful to debug crashes.)
if (ActivityThread.currentActivityThread() != null) {
ActivityThread.currentActivityThread().stopProfiling();
}
// Bring up crash dialog, wait for it to be dismissed // Bring up crash dialog, wait for it to be dismissed
ActivityManagerNative.getDefault().handleApplicationCrash( ActivityManagerNative.getDefault().handleApplicationCrash(
mApplicationObject, new ApplicationErrorReport.CrashInfo(e)); mApplicationObject, new ApplicationErrorReport.CrashInfo(e));