public final class Debug
extends Object
java.lang.Object | |
↳ | android.os.Debug |
为Android应用程序提供各种调试方法,包括跟踪和分配计数。
记录跟踪文件
调试可以创建日志文件,提供有关应用程序的详细信息,例如调用堆栈以及任何正在运行的方法的启动/停止时间。 有关读取跟踪文件的信息,请参阅Traceview: A Graphical Log Viewer 。 要开始记录跟踪文件,请调用startMethodTracing()方法之一。 要停止跟踪,请拨打stopMethodTracing()
。
Nested classes |
|
---|---|
class |
Debug.InstructionCount 此类已在API级别23中弃用。不再支持指令计数。 |
class |
Debug.MemoryInfo 该类用于检索有关此过程的内存映射的各种统计信息。 |
Constants |
|
---|---|
int |
SHOW_CLASSLOADER |
int |
SHOW_FULL_DETAIL printLoadedClasses()的标志。 |
int |
SHOW_INITIALIZED |
int |
TRACE_COUNT_ALLOCS 此常数在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
Public methods |
|
---|---|
static void |
changeDebugPort(int port) 此方法在API级别3中已弃用。不再需要或无用 |
static void |
dumpHprofData(String fileName) 将“hprof”数据转储到指定的文件。 |
static boolean |
dumpService(String name, FileDescriptor fd, String[] args) 按名称获取系统服务的调试转储。 |
static void |
enableEmulatorTraceOutput() 启用“仿真器轨迹”,其中关于当前方法的信息可用于“仿真器轨迹”功能。 |
static final int |
getBinderDeathObjectCount() 返回当前进程中存在的Binder对象的死亡通知链接数。 |
static final int |
getBinderLocalObjectCount() 返回当前进程中存在的活动本地Binder对象的数量。 |
static final int |
getBinderProxyObjectCount() 返回当前进程中存在的远程代理Binder对象的引用数量。 |
static int |
getBinderReceivedTransactions() 返回活页夹驱动程序收到的事务数量。 |
static int |
getBinderSentTransactions() 返回此进程发送的事务数。 |
static int |
getGlobalAllocCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
getGlobalAllocSize() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
getGlobalClassInitCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
getGlobalClassInitTime() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
getGlobalExternalAllocCount() 此方法在API级别11中已弃用。此方法现在已过时。 |
static int |
getGlobalExternalAllocSize() 此方法在API级别11中已弃用。此方法现在已过时。 |
static int |
getGlobalExternalFreedCount() 此方法在API级别11中已弃用。此方法现在已过时。 |
static int |
getGlobalExternalFreedSize() 此方法在API级别11中已弃用。此方法现在已过时。 |
static int |
getGlobalFreedCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
getGlobalFreedSize() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
getGlobalGcInvocationCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
getLoadedClassCount() 获取加载类的数量。 |
static void |
getMemoryInfo(Debug.MemoryInfo memoryInfo) 检索有关此进程内存使用情况的信息。 |
static long |
getNativeHeapAllocatedSize() 返回本地堆中分配的内存量。 |
static long |
getNativeHeapFreeSize() 返回本机堆中的可用内存量。 |
static long |
getNativeHeapSize() 返回本机堆的大小。 |
static long |
getPss() 检索smaps给出的进程使用的PSS内存。 |
static String |
getRuntimeStat(String statName) 如果不存在此类运行时统计信息,则返回特定运行时统计信息的值或 |
static Map<String, String> |
getRuntimeStats() 返回 |
static int |
getThreadAllocCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
getThreadAllocSize() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
getThreadExternalAllocCount() 此方法在API级别11中已弃用。此方法现在已过时。 |
static int |
getThreadExternalAllocSize() 此方法在API级别11中已弃用。此方法现在已过时。 |
static int |
getThreadGcInvocationCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static boolean |
isDebuggerConnected() 确定调试器当前是否连接。 |
static void |
printLoadedClasses(int flags) 将所有当前加载的类的列表转储到日志文件。 |
static void |
resetAllCounts() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetGlobalAllocCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetGlobalAllocSize() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetGlobalClassInitCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetGlobalClassInitTime() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetGlobalExternalAllocCount() 此方法在API级别11中已弃用。此方法现在已过时。 |
static void |
resetGlobalExternalAllocSize() 此方法在API级别11中已弃用。此方法现在已过时。 |
static void |
resetGlobalExternalFreedCount() 此方法在API级别11中已弃用。此方法现在已过时。 |
static void |
resetGlobalExternalFreedSize() 此方法在API级别11中已弃用。此方法现在已过时。 |
static void |
resetGlobalFreedCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetGlobalFreedSize() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetGlobalGcInvocationCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetThreadAllocCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetThreadAllocSize() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
resetThreadExternalAllocCount() 此方法在API级别11中已弃用。此方法现在已过时。 |
static void |
resetThreadExternalAllocSize() 此方法在API级别11中已弃用。此方法现在已过时。 |
static void |
resetThreadGcInvocationCount() 此方法在API级别23中已弃用。精确计数是运行时的负担,可能会被删除。 |
static int |
setAllocationLimit(int limit) 此方法在API级别11中已弃用。此方法现在已过时。 |
static int |
setGlobalAllocationLimit(int limit) 此方法在API级别11中已弃用。此方法现在已过时。 |
static void |
startAllocCounting() 此方法在API级别18中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
startMethodTracing() 使用默认日志名称和缓冲区大小启动方法跟踪。 |
static void |
startMethodTracing(String tracePath, int bufferSize, int flags) 启动方法跟踪,指定跟踪日志文件名称,缓冲区大小和标志。 |
static void |
startMethodTracing(String tracePath) 启动方法跟踪,指定跟踪日志文件路径。 |
static void |
startMethodTracing(String tracePath, int bufferSize) 启动方法跟踪,指定跟踪日志文件名称和缓冲区大小。 |
static void |
startMethodTracingSampling(String tracePath, int bufferSize, int intervalUs) 开始基于采样的方法跟踪,指定跟踪日志文件名称,缓冲区大小和采样间隔。 |
static void |
startNativeTracing() 启用qemu跟踪。 |
static void |
stopAllocCounting() 此方法在API级别18中已弃用。精确计数是运行时的负担,可能会被删除。 |
static void |
stopMethodTracing() 停止方法追踪。 |
static void |
stopNativeTracing() 停止qemu跟踪。 |
static long |
threadCpuTimeNanos() 获取线程CPU使用情况的指示。 |
static void |
waitForDebugger() 等到调试器连接。 |
static boolean |
waitingForDebugger() 如果一个或多个线程正在等待调试器附加,则返回“true”。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int SHOW_FULL_DETAIL
printLoadedClasses()的标志。 默认行为是只显示类名。
常数值:1(0x00000001)
int TRACE_COUNT_ALLOCS
此常数在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
startMethodTracing()的标志。 这些可以进行或运算。 TRACE_COUNT_ALLOCS将startAllocCounting的结果添加到跟踪密钥文件。
常数值:1(0x00000001)
void changeDebugPort (int port)
此方法在API级别3中已被弃用。
不再需要或有用
更改JDWP端口。
Parameters | |
---|---|
port |
int
|
void dumpHprofData (String fileName)
将“hprof”数据转储到指定的文件。 这可能会导致GC。
Parameters | |
---|---|
fileName |
String : Full pathname of output file (e.g. "/sdcard/dump.hprof"). |
Throws | |
---|---|
UnsupportedOperationException |
if the VM was built without HPROF support. |
IOException |
if an error occurs while opening or writing files. |
boolean dumpService (String name, FileDescriptor fd, String[] args)
按名称获取系统服务的调试转储。
大多数服务都要求调用者保存android.permission.DUMP。
Parameters | |
---|---|
name |
String : of the service to dump |
fd |
FileDescriptor : to write dump output to (usually an output log file) |
args |
String : to pass to the service's dump method, may be null |
Returns | |
---|---|
boolean |
true if the service was dumped successfully, false if the service could not be found or had an error while dumping |
void enableEmulatorTraceOutput ()
启用“仿真器轨迹”,其中关于当前方法的信息可用于“仿真器轨迹”功能。 没有相应的“禁用”调用 - 当追踪应该打开并且保持原样时,此框架将用于框架,以便使用F9 / F10捕获的跟踪将包含必要的数据。 这将虚拟机置于“配置文件”模式,这会产生性能影响。 要暂时启用跟踪,请使用startNativeTracing()
。
int getBinderDeathObjectCount ()
返回当前进程中存在的Binder对象的死亡通知链接数。
Returns | |
---|---|
int |
int getBinderLocalObjectCount ()
返回当前进程中存在的活动本地Binder对象的数量。
Returns | |
---|---|
int |
int getBinderProxyObjectCount ()
返回当前进程中存在的远程代理Binder对象的引用数量。
Returns | |
---|---|
int |
int getBinderReceivedTransactions ()
返回活页夹驱动程序收到的事务数量。
Returns | |
---|---|
int |
The number of received transactions or -1 if it could not read the stats. |
int getBinderSentTransactions ()
返回此进程发送的事务数。
Returns | |
---|---|
int |
The number of sent transactions or -1 if it could not read t. |
int getGlobalAllocCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
返回 start
和 stop
之间由运行时分配的对象的全局计数。
Returns | |
---|---|
int |
int getGlobalAllocSize ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
返回 start
和 stop
之间由运行时分配的对象的全局大小(以字节为 stop
。
Returns | |
---|---|
int |
int getGlobalClassInitCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
返回在 start
和 stop
之间成功初始化的类的数量(即那些没有抛出异常而执行的类)。
Returns | |
---|---|
int |
int getGlobalClassInitTime ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
Returns | |
---|---|
int |
int getGlobalExternalAllocCount ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性并始终返回0。
Returns | |
---|---|
int |
int getGlobalExternalAllocSize ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性并始终返回0。
Returns | |
---|---|
int |
int getGlobalExternalFreedCount ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性并始终返回0。
Returns | |
---|---|
int |
int getGlobalExternalFreedSize ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性,不起作用。
Returns | |
---|---|
int |
int getGlobalFreedCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
返回 start
和 stop
之间由运行时释放的对象的全局计数。
Returns | |
---|---|
int |
int getGlobalFreedSize ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
返回 start
和 stop
之间由运行时释放的对象的全局大小(以字节为 stop
。
Returns | |
---|---|
int |
int getGlobalGcInvocationCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
返回 start
和 stop
之间的非并发GC调用 stop
。
Returns | |
---|---|
int |
int getLoadedClassCount ()
获取加载类的数量。
Returns | |
---|---|
int |
the number of loaded classes. |
void getMemoryInfo (Debug.MemoryInfo memoryInfo)
检索有关此进程内存使用情况的信息。 这些信息被达尔维克,本地堆以及其他所有内容的使用量所分解。
注意:此方法直接从可用的低级数据中为给定进程检索内存信息。 它可能无法检索有关某些受保护分配的信息,例如图形。 如果您想确保您可以看到有关流程分配的所有信息,请改用getProcessMemoryInfo(int[])
。
Parameters | |
---|---|
memoryInfo |
Debug.MemoryInfo
|
long getNativeHeapAllocatedSize ()
返回本地堆中分配的内存量。
Returns | |
---|---|
long |
The allocated size in bytes. |
long getNativeHeapFreeSize ()
返回本机堆中的可用内存量。
Returns | |
---|---|
long |
The freed size in bytes. |
long getNativeHeapSize ()
返回本机堆的大小。
Returns | |
---|---|
long |
The size of the native heap in bytes. |
String getRuntimeStat (String statName)
如果不存在此类运行时统计信息,则返回特定运行时统计信息的值或 null
。
下表列出了运行时支持的运行时统计信息。 注意运行时统计信息可以在未来的API级别添加或删除。
Runtime statistic name | Meaning | Example | Supported (API Levels) |
---|---|---|---|
art.gc.gc-count | The number of garbage collection runs. | 164 |
23 |
art.gc.gc-time | The total duration of garbage collection runs in ms. | 62364 |
23 |
art.gc.bytes-allocated | The total number of bytes that the application allocated. | 1463948408 |
23 |
art.gc.bytes-freed | The total number of bytes that garbage collection reclaimed. | 1313493084 |
23 |
art.gc.blocking-gc-count | The number of blocking garbage collection runs. | 2 |
23 |
art.gc.blocking-gc-time | The total duration of blocking garbage collection runs in ms. | 804 |
23 |
art.gc.gc-count-rate-histogram | Every 10 seconds, the gc-count-rate is computed as the number of garbage collection runs that have occurred over the last 10 seconds. art.gc.gc-count-rate-histogram is a histogram of the gc-count-rate samples taken since the process began. The histogram can be used to identify instances of high rates of garbage collection runs. For example, a histogram of "0:34503,1:45350,2:11281,3:8088,4:43,5:8" shows that most of the time there are between 0 and 2 garbage collection runs every 10 seconds, but there were 8 distinct 10-second intervals in which 5 garbage collection runs occurred. | 0:34503,1:45350,2:11281,3:8088,4:43,5:8 |
23 |
art.gc.blocking-gc-count-rate-histogram | Every 10 seconds, the blocking-gc-count-rate is computed as the number of blocking garbage collection runs that have occurred over the last 10 seconds. art.gc.blocking-gc-count-rate-histogram is a histogram of the blocking-gc-count-rate samples taken since the process began. The histogram can be used to identify instances of high rates of blocking garbage collection runs. For example, a histogram of "0:99269,1:1,2:1" shows that most of the time there are zero blocking garbage collection runs every 10 seconds, but there was one 10-second interval in which one blocking garbage collection run occurred, and there was one interval in which two blocking garbage collection runs occurred. | 0:99269,1:1,2:1 |
23 |
Parameters | |
---|---|
statName |
String : the name of the runtime statistic to look up. |
Returns | |
---|---|
String |
the value of the specified runtime statistic or null if the runtime statistic doesn't exist. |
Map<String, String> getRuntimeStats ()
返回 getRuntimeStat(String)
支持的运行时统计信息的名称/值的 getRuntimeStat(String)
。
Returns | |
---|---|
Map<String, String> |
a map of the names/values of the supported runtime statistics. |
int getThreadAllocCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
返回 start
和 stop
之间由运行时分配的对象的线程本地计数。
Returns | |
---|---|
int |
int getThreadAllocSize ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
返回 start
和 stop
之间由运行时分配的对象的线程本地大小。
Returns | |
---|---|
int |
The allocated size in bytes. |
int getThreadExternalAllocCount ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性,不起作用。
Returns | |
---|---|
int |
int getThreadExternalAllocSize ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性,不起作用。
Returns | |
---|---|
int |
int getThreadGcInvocationCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
返回 start
和 stop
之间的线程本地非并发GC调用的 stop
。
Returns | |
---|---|
int |
boolean isDebuggerConnected ()
确定调试器当前是否连接。
Returns | |
---|---|
boolean |
void printLoadedClasses (int flags)
将所有当前加载的类的列表转储到日志文件。
Parameters | |
---|---|
flags |
int : See constants above. |
void resetAllCounts ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除所有全局和线程本地内存分配计数器。
也可以看看:
void resetGlobalAllocCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除分配的对象的全局计数。
也可以看看:
void resetGlobalAllocSize ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除分配的对象的全局大小。
也可以看看:
void resetGlobalClassInitCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除已初始化的类的数量。
也可以看看:
void resetGlobalClassInitTime ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除初始化类所花费的时间。
也可以看看:
void resetGlobalExternalAllocCount ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性,不起作用。
void resetGlobalExternalAllocSize ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性,不起作用。
void resetGlobalExternalFreedCount ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性,不起作用。
void resetGlobalExternalFreedSize ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性,不起作用。
void resetGlobalFreedCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除释放对象的全局计数。
也可以看看:
void resetGlobalFreedSize ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除释放对象的全局大小。
也可以看看:
void resetGlobalGcInvocationCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除非并发GC调用的计数。
也可以看看:
void resetThreadAllocCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除分配的对象的线程本地计数。
也可以看看:
void resetThreadAllocSize ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除分配的对象的线程本地计数。
也可以看看:
void resetThreadExternalAllocCount ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性,不起作用。
void resetThreadExternalAllocSize ()
此方法在API级别11中已弃用。
这种方法现在已经过时了。
此方法存在兼容性,不起作用。
void resetThreadGcInvocationCount ()
此方法在API级别23中已弃用。
准确计数是运行时的负担,可能会被删除。
清除非并发GC调用的线程本地计数。
也可以看看:
int setAllocationLimit (int limit)
此方法在API级别11中已弃用。
这种方法现在已经过时了。
在当前线程中建立对象分配限制。 此功能在发布版本中从未启用。 Honeycomb中删除了分配限制功能。 此方法存在兼容性,并且始终返回-1且不起作用。
Parameters | |
---|---|
limit |
int
|
Returns | |
---|---|
int |
int setGlobalAllocationLimit (int limit)
此方法在API级别11中已弃用。
这种方法现在已经过时了。
建立全局对象分配限制。 此功能在发布版本中从未启用。 Honeycomb中删除了分配限制功能。 此方法存在兼容性,并且始终返回-1且不起作用。
Parameters | |
---|---|
limit |
int
|
Returns | |
---|---|
int |
void startAllocCounting ()
此方法在API级别18中已被弃用。
准确计数是运行时的负担,可能会被删除。
开始计算内存分配的数量和聚合大小。
start
方法重置计数并启用计数。 stop
方法禁用计数,以便分析代码不会导致其他分配。 各种get
方法返回指定的值。 各种reset
方法重置指定的计数。
为整个系统(全局)和每个线程保留计数。 除当前线程以外的线程的每线程计数不会被“重置”或“开始”调用清除。
void startMethodTracing ()
使用默认日志名称和缓冲区大小启动方法跟踪。
默认情况下,跟踪文件被称为“dmtrace.trace”,它位于主共享/外部存储上的特定于软件包的目录下,由 getExternalFilesDir(String)
返回。
有关读取跟踪文件的信息,请参阅 Traceview: A Graphical Log Viewer 。
启用方法跟踪时,虚拟机的运行速度比平时慢,因此跟踪文件的计时应该只考虑相对条件(例如运行#1比运行#2运行速度快)。 原生方法的时间不会改变,所以不要试图用它来比较同一方法的解释和原生实现的性能。 作为替代方案,可考虑经由使用基于采样的方法跟踪startMethodTracingSampling(String, int, int)
或“天然的”通过在仿真器跟踪startNativeTracing()
。
void startMethodTracing (String tracePath, int bufferSize, int flags)
启动方法跟踪,指定跟踪日志文件名称,缓冲区大小和标志。
当给出相对文件路径时,跟踪文件将被放置在主共享/外部存储上的特定于软件包的目录下,如 getExternalFilesDir(String)
所返回的 getExternalFilesDir(String)
。
有关读取跟踪文件的信息,请参阅 Traceview: A Graphical Log Viewer 。
启用方法跟踪时,虚拟机的运行速度比平时慢,因此跟踪文件的计时应该只考虑相对条件(例如运行#1比运行#2运行速度快)。 原生方法的时间不会改变,所以不要试图用它来比较同一方法的解释和原生实现的性能。 作为替代方案,可考虑经由使用基于采样的方法跟踪startMethodTracingSampling(String, int, int)
或“天然的”通过在仿真器跟踪startNativeTracing()
。
Parameters | |
---|---|
tracePath |
String : Path to the trace log file to create. If null , this will default to "dmtrace.trace". If the file already exists, it will be truncated. If the path given does not end in ".trace", it will be appended for you. |
bufferSize |
int : The maximum amount of trace data we gather. If not given, it defaults to 8MB. |
flags |
int : Flags to control method tracing. The only one that is currently defined is TRACE_COUNT_ALLOCS . |
void startMethodTracing (String tracePath)
启动方法跟踪,指定跟踪日志文件路径。
当给出相对文件路径时,跟踪文件将被放置在主共享/外部存储上的特定于软件包的目录下,由 getExternalFilesDir(String)
返回。
有关读取跟踪文件的信息,请参阅 Traceview: A Graphical Log Viewer 。
启用方法跟踪时,虚拟机的运行速度比平时慢,因此跟踪文件的计时应该只考虑相对条件(例如运行#1比运行#2运行速度快)。 原生方法的时间不会改变,所以不要试图用它来比较同一方法的解释和原生实现的性能。 作为替代方案,可考虑经由使用基于采样的方法跟踪startMethodTracingSampling(String, int, int)
或“天然的”通过在仿真器跟踪startNativeTracing()
。
Parameters | |
---|---|
tracePath |
String : Path to the trace log file to create. If null , this will default to "dmtrace.trace". If the file already exists, it will be truncated. If the path given does not end in ".trace", it will be appended for you. |
void startMethodTracing (String tracePath, int bufferSize)
启动方法跟踪,指定跟踪日志文件名称和缓冲区大小。
当给出相对文件路径时,跟踪文件将被放置在主共享/外部存储上的特定于软件包的目录下,由 getExternalFilesDir(String)
返回。
有关读取跟踪文件的信息,请参阅 Traceview: A Graphical Log Viewer 。
启用方法跟踪时,虚拟机的运行速度比平时慢,因此跟踪文件的计时应该只考虑相对条件(例如运行#1比运行#2运行速度快)。 原生方法的时间不会改变,所以不要试图用它来比较同一方法的解释和原生实现的性能。 作为替代方案,可考虑经由使用基于采样的方法跟踪startMethodTracingSampling(String, int, int)
或“天然的”通过在仿真器跟踪startNativeTracing()
。
Parameters | |
---|---|
tracePath |
String : Path to the trace log file to create. If null , this will default to "dmtrace.trace". If the file already exists, it will be truncated. If the path given does not end in ".trace", it will be appended for you. |
bufferSize |
int : The maximum amount of trace data we gather. If not given, it defaults to 8MB. |
void startMethodTracingSampling (String tracePath, int bufferSize, int intervalUs)
开始基于采样的方法跟踪,指定跟踪日志文件名称,缓冲区大小和采样间隔。
当给出相对文件路径时,跟踪文件将被放置在主共享/外部存储上的特定于软件包的目录下,由 getExternalFilesDir(String)
返回。
有关读取跟踪文件的信息,请参阅 Traceview: A Graphical Log Viewer 。
Parameters | |
---|---|
tracePath |
String : Path to the trace log file to create. If null , this will default to "dmtrace.trace". If the file already exists, it will be truncated. If the path given does not end in ".trace", it will be appended for you. |
bufferSize |
int : The maximum amount of trace data we gather. If not given, it defaults to 8MB. |
intervalUs |
int : The amount of time between each sample in microseconds. |
void startNativeTracing ()
启用qemu跟踪。 为了这个工作需要运行qemu模拟器中的所有东西; 否则,此方法将不起作用。 跟踪文件在模拟器启动时在命令行中指定。 例如,下面的命令行
emulator -trace foo
将开始运行模拟器并创建一个名为“foo”的跟踪文件。 此方法只是将跟踪记录写入跟踪文件。
这与startMethodTracing()
之间的主要区别在于,qemu仿真器中的跟踪跟踪每个进程的每个cpu指令,包括内核代码,因此我们拥有更完整的信息,包括所有上下文切换。 我们还可以获得更多详细信息,如缓存未命中。 调用的顺序是通过后处理指令跟踪来确定的。 qemu跟踪也是在不修改应用程序或扰乱调用时间的情况下完成的,因为没有将检测添加到正在跟踪的应用程序中。
使用此方法的一个限制与在真实设备上使用startMethodTracing()
相比,是仿真器不能模拟所有真实的硬件效应,如内存和总线争用。 仿真器也有一个简单的缓存模型,不能捕获真正缓存的所有复杂性。
void stopAllocCounting ()
此方法在API级别18中已被弃用。
准确计数是运行时的负担,可能会被删除。
停止计算内存分配的数量和聚合大小。
void stopNativeTracing ()
停止qemu跟踪。 请参阅startNativeTracing()
开始跟踪。
跟踪可以根据需要多次启动和停止。 当qemu模拟器本身停止时,缓冲的跟踪记录将被刷新并写入跟踪文件。 事实上,根本没有必要调用这种方法; 简单地杀死qemu就足够了。 但是启动和停止跟踪对于检查代码的特定区域很有用。
long threadCpuTimeNanos ()
获取线程CPU使用情况的指示。 返回的值表示当前线程执行代码或等待某些类型的I / O所花费的时间。 时间以纳秒表示,并且与早期调用的结果相比仅有意义。 请注意,纳秒分辨率并不意味着纳秒精度。 在不支持此操作的系统上,该调用返回-1。
Returns | |
---|---|
long |
void waitForDebugger ()
等到调试器连接。 只要调试器附加了,就会返回,因此如果要立即开始跟踪,则需要在waitForDebugger()调用之后放置一个断点。
boolean waitingForDebugger ()
如果一个或多个线程正在等待调试器附加,则返回“true”。
Returns | |
---|---|
boolean |