diff options
-rw-r--r-- | api/current.xml | 17 | ||||
-rw-r--r-- | core/java/android/os/Debug.java | 31 |
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; + } + } } |