summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/current.xml17
-rw-r--r--core/java/android/os/Debug.java31
2 files changed, 47 insertions, 1 deletions
diff --git a/api/current.xml b/api/current.xml
index 4146859..2e434af 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -114301,6 +114301,23 @@
<exception name="IOException" type="java.io.IOException">
</exception>
</method>
+<method name="dumpService"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="name" type="java.lang.String">
+</parameter>
+<parameter name="fd" type="java.io.FileDescriptor">
+</parameter>
+<parameter name="args" type="java.lang.String[]">
+</parameter>
+</method>
<method name="enableEmulatorTraceOutput"
return="void"
abstract="false"
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java
index a4c595d..2e14667 100644
--- a/core/java/android/os/Debug.java
+++ b/core/java/android/os/Debug.java
@@ -57,6 +57,8 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo
*/
public final class Debug
{
+ private static final String TAG = "Debug";
+
/**
* Flags for startMethodTracing(). These can be ORed together.
*
@@ -1111,7 +1113,7 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo
}
}
} else {
- Log.w("android.os.Debug",
+ Log.wtf(TAG,
"setFieldsOn(" + (cl == null ? "null" : cl.getName()) +
") called in non-DEBUG build");
}
@@ -1127,4 +1129,31 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo
@Retention(RetentionPolicy.RUNTIME)
public @interface DebugProperty {
}
+
+ /**
+ * Get a debugging dump of a system service by name.
+ *
+ * <p>Most services require the caller to hold android.permission.DUMP.
+ *
+ * @param name of the service to dump
+ * @param fd to write dump output to (usually an output log file)
+ * @param args to pass to the service's dump method, may be null
+ * @return true if the service was dumped successfully, false if
+ * the service could not be found or had an error while dumping
+ */
+ public static boolean dumpService(String name, FileDescriptor fd, String[] args) {
+ IBinder service = ServiceManager.getService(name);
+ if (service == null) {
+ Log.e(TAG, "Can't find service to dump: " + name);
+ return false;
+ }
+
+ try {
+ service.dump(fd, args);
+ return true;
+ } catch (RemoteException e) {
+ Log.e(TAG, "Can't dump service: " + name, e);
+ return false;
+ }
+ }
}