Merge "[Debug]: Add timeout for dumpNativeBacktraceToFile." am: b6f7a85b85
am: ec69bd0aa3
Change-Id: Idfe455733dd12bf82c31cb505681e4fa89d57bfb
This commit is contained in:
@@ -2219,11 +2219,13 @@ public final class Debug
|
||||
}
|
||||
|
||||
/**
|
||||
* Have the stack traces of the given native process dumped to the
|
||||
* specified file. Will be appended to the file.
|
||||
* Append the stack traces of a given native process to a specified file.
|
||||
* @param pid pid to dump.
|
||||
* @param file path of file to append dump to.
|
||||
* @param timeoutSecs time to wait in seconds, or 0 to wait forever.
|
||||
* @hide
|
||||
*/
|
||||
public static native void dumpNativeBacktraceToFile(int pid, String file);
|
||||
public static native void dumpNativeBacktraceToFileTimeout(int pid, String file, int timeoutSecs);
|
||||
|
||||
/**
|
||||
* Get description of unreachable native memory.
|
||||
|
||||
@@ -1012,9 +1012,8 @@ static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject clazz,
|
||||
ALOGD("Native heap dump complete.\n");
|
||||
}
|
||||
|
||||
|
||||
static void android_os_Debug_dumpNativeBacktraceToFile(JNIEnv* env, jobject clazz,
|
||||
jint pid, jstring fileName)
|
||||
static void android_os_Debug_dumpNativeBacktraceToFileTimeout(JNIEnv* env, jobject clazz,
|
||||
jint pid, jstring fileName, jint timeoutSecs)
|
||||
{
|
||||
if (fileName == NULL) {
|
||||
jniThrowNullPointerException(env, "file == null");
|
||||
@@ -1037,7 +1036,7 @@ static void android_os_Debug_dumpNativeBacktraceToFile(JNIEnv* env, jobject claz
|
||||
if (lseek(fd, 0, SEEK_END) < 0) {
|
||||
fprintf(stderr, "lseek: %s\n", strerror(errno));
|
||||
} else {
|
||||
dump_backtrace_to_file(pid, fd);
|
||||
dump_backtrace_to_file_timeout(pid, fd, timeoutSecs);
|
||||
}
|
||||
|
||||
close(fd);
|
||||
@@ -1083,8 +1082,8 @@ static const JNINativeMethod gMethods[] = {
|
||||
(void*)android_os_Debug_getProxyObjectCount },
|
||||
{ "getBinderDeathObjectCount", "()I",
|
||||
(void*)android_os_Debug_getDeathObjectCount },
|
||||
{ "dumpNativeBacktraceToFile", "(ILjava/lang/String;)V",
|
||||
(void*)android_os_Debug_dumpNativeBacktraceToFile },
|
||||
{ "dumpNativeBacktraceToFileTimeout", "(ILjava/lang/String;I)V",
|
||||
(void*)android_os_Debug_dumpNativeBacktraceToFileTimeout },
|
||||
{ "getUnreachableMemory", "(IZ)Ljava/lang/String;",
|
||||
(void*)android_os_Debug_getUnreachableMemory },
|
||||
};
|
||||
|
||||
@@ -5358,7 +5358,8 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
for (int pid : pids) {
|
||||
if (DEBUG_ANR) Slog.d(TAG, "Collecting stacks for native pid " + pid);
|
||||
final long sime = SystemClock.elapsedRealtime();
|
||||
Debug.dumpNativeBacktraceToFile(pid, tracesPath);
|
||||
|
||||
Debug.dumpNativeBacktraceToFileTimeout(pid, tracesPath, 10);
|
||||
if (DEBUG_ANR) Slog.d(TAG, "Done with native pid " + pid
|
||||
+ " in " + (SystemClock.elapsedRealtime()-sime) + "ms");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user