Stop profiling on uncaught exception.
When "handling" an uncaught exception, make an attempt to stop
profiling. In case profiling was active, this will avoid losing
the profiling buffer.
This change is required as a base in order for
https://android-review.googlesource.com/#/c/249721/
to merge cleanly.
(Cherry picked from commit 4c79fea9ef)
Bug: 26291225
Change-Id: I35f352e5f28eafe4702da9eae587c3b65c360b3a
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user