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) {
if (managed) {
try {

View File

@@ -86,6 +86,13 @@ public class RuntimeInit {
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
ActivityManagerNative.getDefault().handleApplicationCrash(
mApplicationObject, new ApplicationErrorReport.CrashInfo(e));