android.os
类 Debug
java.lang.Object android.os.Debug
public final class Debug extends Object
Provides various debugging functions for Android applications, including tracing and allocation counts.
Logging Trace Files
Debug can create log files that give details about an application, such as a call stack and start/stop times for any running methods. See Traceview: A Graphical Log Viewer for information about reading trace files. To start logging trace files, call one of the startMethodTracing() methods. To stop tracing, call stopMethodTracing().
嵌套类摘要 | |
---|---|
static class | Debug.InstructionCount API for gathering and querying instruction counts. |
static class | Debug.MemoryInfo This class is used to retrieved various statistics about the memory mappings for this process. |
字段摘要 | |
---|---|
static int | SHOW_CLASSLOADER |
static int | SHOW_FULL_DETAIL Flags for printLoadedClasses(). |
static int | SHOW_INITIALIZED |
static int | TRACE_COUNT_ALLOCS Flags for startMethodTracing(). |
方法摘要 | |
---|---|
static void | changeDebugPort(int port) 已过时。 no longer needed or useful |
static void | dumpHprofData(String fileName) Dump "hprof" data to the specified file. |
static void | enableEmulatorTraceOutput() Enable "emulator traces", in which information about the current method is made available to the "emulator -trace" feature. |
static int | getBinderDeathObjectCount() Returns the number of death notification links to Binder objects that exist in the current process. |
static int | getBinderLocalObjectCount() Returns the number of active local Binder objects that exist in the current process. |
static int | getBinderProxyObjectCount() Returns the number of references to remote proxy Binder objects that exist in the current process. |
static int | getBinderReceivedTransactions() Returns the number of received transactions from the binder driver. |
static int | getBinderSentTransactions() Returns the number of sent transactions from this process. |
static int | getGlobalAllocCount() |
static int | getGlobalAllocSize() |
static int | getGlobalExternalAllocCount() |
static int | getGlobalExternalAllocSize() |
static int | getGlobalExternalFreedCount() |
static int | getGlobalExternalFreedSize() |
static int | getGlobalFreedCount() |
static int | getGlobalFreedSize() |
static int | getGlobalGcInvocationCount() |
static int | getLoadedClassCount() Get the number of loaded classes. |
static void | getMemoryInfo(Debug.MemoryInfo memoryInfo) Retrieves information about this processes memory usages. |
static long | getNativeHeapAllocatedSize() Returns the amount of allocated memory in the native heap. |
static long | getNativeHeapFreeSize() Returns the amount of free memory in the native heap. |
static long | getNativeHeapSize() Returns the size of the native heap. |
static int | getThreadAllocCount() |
static int | getThreadAllocSize() |
static int | getThreadExternalAllocCount() |
static int | getThreadExternalAllocSize() |
static int | getThreadGcInvocationCount() |
static boolean | isDebuggerConnected() Determine if a debugger is currently attached. |
static void | printLoadedClasses(int flags) Dump a list of all currently loaded class to the log file. |
static void | resetAllCounts() |
static void | resetGlobalAllocCount() |
static void | resetGlobalAllocSize() |
static void | resetGlobalExternalAllocCount() |
static void | resetGlobalExternalAllocSize() |
static void | resetGlobalExternalFreedCount() |
static void | resetGlobalExternalFreedSize() |
static void | resetGlobalFreedCount() |
static void | resetGlobalFreedSize() |
static void | resetGlobalGcInvocationCount() |
static void | resetThreadAllocCount() |
static void | resetThreadAllocSize() |
static void | resetThreadExternalAllocCount() |
static void | resetThreadExternalAllocSize() |
static void | resetThreadGcInvocationCount() |
static int | setAllocationLimit(int limit) Establish an object allocation limit in the current thread. |
static int | setGlobalAllocationLimit(int limit) Establish a global object allocation limit. |
static void | startAllocCounting() Count the number and aggregate size of memory allocations between two points. |
static void | startMethodTracing() Start method tracing with default log name and buffer size. |
static void | startMethodTracing(String traceName) Start method tracing, specifying the trace log file name. |
static void | startMethodTracing(String traceName, int bufferSize) Start method tracing, specifying the trace log file name and the buffer size. |
static void | startMethodTracing(String traceName, int bufferSize, int flags) Start method tracing, specifying the trace log file name and the buffer size. |
static void | startNativeTracing() Enable qemu tracing. |
static void | stopAllocCounting() |
static void | stopMethodTracing() Stop method tracing. |
static void | stopNativeTracing() Stop qemu tracing. |
static long | threadCpuTimeNanos() Get an indication of thread CPU usage. |
static void | waitForDebugger() Wait until a debugger attaches. |
static boolean | waitingForDebugger() Returns "true" if one or more threads is waiting for a debugger to attach. |
从类 java.lang.Object 继承的方法 |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
TRACE_COUNT_ALLOCS
public static final int TRACE_COUNT_ALLOCS
-
Flags for startMethodTracing(). These can be ORed together. TRACE_COUNT_ALLOCS adds the results from startAllocCounting to the trace key file.
-
另请参见:
- 常量字段值
SHOW_FULL_DETAIL
public static final int SHOW_FULL_DETAIL
-
Flags for printLoadedClasses(). Default behavior is to only show the class name.
-
另请参见:
- 常量字段值
SHOW_CLASSLOADER
public static final int SHOW_CLASSLOADER
- 常量字段值
-
另请参见:
SHOW_INITIALIZED
public static final int SHOW_INITIALIZED
- 常量字段值
-
另请参见:
方法详细信息 |
---|
waitForDebugger
public static void waitForDebugger()
- Wait until a debugger attaches. As soon as the debugger attaches, this returns, so you will need to place a breakpoint after the waitForDebugger() call if you want to start tracing immediately.
waitingForDebugger
public static boolean waitingForDebugger()
- Returns "true" if one or more threads is waiting for a debugger to attach.
isDebuggerConnected
public static boolean isDebuggerConnected()
- Determine if a debugger is currently attached.
changeDebugPort
@Deprecated
public static void changeDebugPort(int port)
- 已过时。 no longer needed or useful
- Change the JDWP port.
startNativeTracing
public static void startNativeTracing()
-
Enable qemu tracing. For this to work requires running everything inside the qemu emulator; otherwise, this method will have no effect. The trace file is specified on the command line when the emulator is started. For example, the following command line
emulator -trace foo
will start running the emulator and create a trace file named "foo". This method simply enables writing the trace records to the trace file.The main differences between this and startMethodTracing() are that tracing in the qemu emulator traces every cpu instruction of every process, including kernel code, so we have more complete information, including all context switches. We can also get more detailed information such as cache misses. The sequence of calls is determined by post-processing the instruction trace. The qemu tracing is also done without modifying the application or perturbing the timing of calls because no instrumentation is added to the application being traced.
One limitation of using this method compared to using startMethodTracing() on the real device is that the emulator does not model all of the real hardware effects such as memory and bus contention. The emulator also has a simple cache model and cannot capture all the complexities of a real cache.
stopNativeTracing
public static void stopNativeTracing()
-
Stop qemu tracing. See startNativeTracing() to start tracing.
Tracing can be started and stopped as many times as desired. When the qemu emulator itself is stopped then the buffered trace records are flushed and written to the trace file. In fact, it is not necessary to call this method at all; simply killing qemu is sufficient. But starting and stopping a trace is useful for examining a specific region of code.
enableEmulatorTraceOutput
public static void enableEmulatorTraceOutput()
- Enable "emulator traces", in which information about the current method is made available to the "emulator -trace" feature. There is no corresponding "disable" call -- this is intended for use by the framework when tracing should be turned on and left that way, so that traces captured with F9/F10 will include the necessary data. This puts the VM into "profile" mode, which has performance consequences. To temporarily enable tracing, use startNativeTracing().
startMethodTracing
public static void startMethodTracing()
- Start method tracing with default log name and buffer size. See Traceview: A Graphical Log Viewer for information about reading these files. Call stopMethodTracing() to stop tracing.
startMethodTracing
public static void startMethodTracing(String traceName)
- Start method tracing, specifying the trace log file name. The trace file will be put under "/sdcard" unless an absolute path is given. See Traceview: A Graphical Log Viewer for information about reading trace files.
-
-
参数:
-
traceName
- Name for the trace log file to create. If no name argument is given, this value defaults to "/sdcard/dmtrace.trace". If the files already exist, they will be truncated. If the trace file given does not end in ".trace", it will be appended for you.
-
startMethodTracing
public static void startMethodTracing(String traceName, int bufferSize)
- Start method tracing, specifying the trace log file name and the buffer size. The trace files will be put under "/sdcard" unless an absolute path is given. See Traceview: A Graphical Log Viewer for information about reading trace files.
-
-
参数:
-
traceName
- Name for the trace log file to create. If no name argument is given, this value defaults to "/sdcard/dmtrace.trace". If the files already exist, they will be truncated. If the trace file given does not end in ".trace", it will be appended for you. -
bufferSize
- The maximum amount of trace data we gather. If not given, it defaults to 8MB.
-
startMethodTracing
public static void startMethodTracing(String traceName, int bufferSize, int flags)
-
Start method tracing, specifying the trace log file name and the buffer size. The trace files will be put under "/sdcard" unless an absolute path is given. See
Traceview: A Graphical Log Viewer for information about reading trace files.
When method tracing is enabled, the VM will run more slowly than usual, so the timings from the trace files should only be considered in relative terms (e.g. was run #1 faster than run #2). The times for native methods will not change, so don't try to use this to compare the performance of interpreted and native implementations of the same method. As an alternative, consider using "native" tracing in the emulator via startNativeTracing().
-
-
参数:
-
traceName
- Name for the trace log file to create. If no name argument is given, this value defaults to "/sdcard/dmtrace.trace". If the files already exist, they will be truncated. If the trace file given does not end in ".trace", it will be appended for you. -
bufferSize
- The maximum amount of trace data we gather. If not given, it defaults to 8MB.
-
stopMethodTracing
public static void stopMethodTracing()
- Stop method tracing.
threadCpuTimeNanos
public static long threadCpuTimeNanos()
- Get an indication of thread CPU usage. The value returned indicates the amount of time that the current thread has spent executing code or waiting for certain types of I/O. The time is expressed in nanoseconds, and is only meaningful when compared to the result from an earlier call. Note that nanosecond resolution does not imply nanosecond accuracy. On system which don't support this operation, the call returns -1.
startAllocCounting
public static void startAllocCounting()
- Count the number and aggregate size of memory allocations between two points. The "start" function resets the counts and enables counting. The "stop" function disables the counting so that the analysis code doesn't cause additional allocations. The "get" function returns the specified value. Counts are kept for the system as a whole and for each thread. The per-thread counts for threads other than the current thread are not cleared by the "reset" or "start" calls.
stopAllocCounting
public static void stopAllocCounting()
getGlobalAllocCount
public static int getGlobalAllocCount()
getGlobalAllocSize
public static int getGlobalAllocSize()
getGlobalFreedCount
public static int getGlobalFreedCount()
getGlobalFreedSize
public static int getGlobalFreedSize()
getGlobalExternalAllocCount
public static int getGlobalExternalAllocCount()
getGlobalExternalAllocSize
public static int getGlobalExternalAllocSize()
getGlobalExternalFreedCount
public static int getGlobalExternalFreedCount()
getGlobalExternalFreedSize
public static int getGlobalExternalFreedSize()
getGlobalGcInvocationCount
public static int getGlobalGcInvocationCount()
getThreadAllocCount
public static int getThreadAllocCount()
getThreadAllocSize
public static int getThreadAllocSize()
getThreadExternalAllocCount
public static int getThreadExternalAllocCount()
getThreadExternalAllocSize
public static int getThreadExternalAllocSize()
getThreadGcInvocationCount
public static int getThreadGcInvocationCount()
resetGlobalAllocCount
public static void resetGlobalAllocCount()
resetGlobalAllocSize
public static void resetGlobalAllocSize()
resetGlobalFreedCount
public static void resetGlobalFreedCount()
resetGlobalFreedSize
public static void resetGlobalFreedSize()
resetGlobalExternalAllocCount
public static void resetGlobalExternalAllocCount()
resetGlobalExternalAllocSize
public static void resetGlobalExternalAllocSize()
resetGlobalExternalFreedCount
public static void resetGlobalExternalFreedCount()
resetGlobalExternalFreedSize
public static void resetGlobalExternalFreedSize()
resetGlobalGcInvocationCount
public static void resetGlobalGcInvocationCount()
resetThreadAllocCount
public static void resetThreadAllocCount()
resetThreadAllocSize
public static void resetThreadAllocSize()
resetThreadExternalAllocCount
public static void resetThreadExternalAllocCount()
resetThreadExternalAllocSize
public static void resetThreadExternalAllocSize()
resetThreadGcInvocationCount
public static void resetThreadGcInvocationCount()
resetAllCounts
public static void resetAllCounts()
getNativeHeapSize
public static long getNativeHeapSize()
- Returns the size of the native heap.
-
-
返回:
- The size of the native heap in bytes.
getNativeHeapAllocatedSize
public static long getNativeHeapAllocatedSize()
- Returns the amount of allocated memory in the native heap.
-
-
返回:
- The allocated size in bytes.
getNativeHeapFreeSize
public static long getNativeHeapFreeSize()
- Returns the amount of free memory in the native heap.
-
-
返回:
- The freed size in bytes.
getMemoryInfo
public static void getMemoryInfo(Debug.MemoryInfo memoryInfo)
- Retrieves information about this processes memory usages. This information is broken down by how much is in use by dalivk, the native heap, and everything else.
setAllocationLimit
public static int setAllocationLimit(int limit)
- Establish an object allocation limit in the current thread. Useful for catching regressions in code that is expected to operate without causing any allocations. Pass in the maximum number of allowed allocations. Use -1 to disable the limit. Returns the previous limit. The preferred way to use this is: int prevLimit = -1; try { prevLimit = Debug.setAllocationLimit(0); ... do stuff that's not expected to allocate memory ... } finally { Debug.setAllocationLimit(prevLimit); } This allows limits to be nested. The try/finally ensures that the limit is reset if something fails. Exceeding the limit causes a dalvik.system.AllocationLimitError to be thrown from a memory allocation call. The limit is reset to -1 when this happens. The feature may be disabled in the VM configuration. If so, this call has no effect, and always returns -1.
setGlobalAllocationLimit
public static int setGlobalAllocationLimit(int limit)
- Establish a global object allocation limit. This is similar to setAllocationLimit(int) but applies to all threads in the VM. It will coexist peacefully with per-thread limits. [ The value of "limit" is currently restricted to 0 (no allocations allowed) or -1 (no global limit). This may be changed in a future release. ]
printLoadedClasses
public static void printLoadedClasses(int flags)
- Dump a list of all currently loaded class to the log file.
-
-
参数:
-
flags
- See constants above.
-
getLoadedClassCount
public static int getLoadedClassCount()
- Get the number of loaded classes.
-
-
返回:
- the number of loaded classes.
dumpHprofData
public static void dumpHprofData(String fileName) throws IOException
- Dump "hprof" data to the specified file. This will cause a GC.
-
-
参数:
-
fileName
- Full pathname of output file (e.g. "/sdcard/dump.hprof").
抛出:
-
UnsupportedOperationException
- if the VM was built without HPROF support. -
IOException
- if an error occurs while opening or writing files.
-
getBinderSentTransactions
public static int getBinderSentTransactions()
- Returns the number of sent transactions from this process.
-
-
返回:
- The number of sent transactions or -1 if it could not read t.
getBinderReceivedTransactions
public static int getBinderReceivedTransactions()
- Returns the number of received transactions from the binder driver.
-
-
返回:
- The number of received transactions or -1 if it could not read the stats.
getBinderLocalObjectCount
public static final int getBinderLocalObjectCount()
- Returns the number of active local Binder objects that exist in the current process.
getBinderProxyObjectCount
public static final int getBinderProxyObjectCount()
- Returns the number of references to remote proxy Binder objects that exist in the current process.
getBinderDeathObjectCount
public static final int getBinderDeathObjectCount()Returns the number of death notification links to Binder objects thatexist in the current process.