1*795d594fSAndroid Build Coastguard Worker# enablevlog 2*795d594fSAndroid Build Coastguard Worker 3*795d594fSAndroid Build Coastguard Workerenablevlog is a JVMTI agent designed for changing the VLOG options of a 4*795d594fSAndroid Build Coastguard Workerrunning process. Currently it only allows one to turn vlog options 'on'. 5*795d594fSAndroid Build Coastguard Worker 6*795d594fSAndroid Build Coastguard Worker# Usage 7*795d594fSAndroid Build Coastguard Worker### Build 8*795d594fSAndroid Build Coastguard Worker> `m libenablevlog` 9*795d594fSAndroid Build Coastguard Worker 10*795d594fSAndroid Build Coastguard WorkerThe libraries will be built for 32-bit, 64-bit, host and target. Below 11*795d594fSAndroid Build Coastguard Workerexamples assume you want to use the 64-bit version. 12*795d594fSAndroid Build Coastguard Worker 13*795d594fSAndroid Build Coastguard WorkerUse `libenablevlogs` if you wish to build a version without non-NDK dynamic 14*795d594fSAndroid Build Coastguard Workerdependencies. 15*795d594fSAndroid Build Coastguard Worker 16*795d594fSAndroid Build Coastguard Worker### Command Line 17*795d594fSAndroid Build Coastguard Worker 18*795d594fSAndroid Build Coastguard WorkerThe agent is loaded using -agentpath like normal. It takes arguments in the 19*795d594fSAndroid Build Coastguard Workerfollowing format: 20*795d594fSAndroid Build Coastguard Worker 21*795d594fSAndroid Build Coastguard Worker`[vlog1[,vlog2[,...]]]` 22*795d594fSAndroid Build Coastguard Worker 23*795d594fSAndroid Build Coastguard WorkerIt will cause the runtime to act as though you had passed these after the 24*795d594fSAndroid Build Coastguard Worker`-verbose:[...]` argument to `dalvikvm`. 25*795d594fSAndroid Build Coastguard Worker 26*795d594fSAndroid Build Coastguard Worker#### Supported events 27*795d594fSAndroid Build Coastguard Worker 28*795d594fSAndroid Build Coastguard WorkerAt the time of writing, the following events may be listened for with this agent 29*795d594fSAndroid Build Coastguard Worker 30*795d594fSAndroid Build Coastguard Worker* `class` 31*795d594fSAndroid Build Coastguard Worker 32*795d594fSAndroid Build Coastguard Worker* `collector` 33*795d594fSAndroid Build Coastguard Worker 34*795d594fSAndroid Build Coastguard Worker* `compiler` 35*795d594fSAndroid Build Coastguard Worker 36*795d594fSAndroid Build Coastguard Worker* `deopt` 37*795d594fSAndroid Build Coastguard Worker 38*795d594fSAndroid Build Coastguard Worker* `gc` 39*795d594fSAndroid Build Coastguard Worker 40*795d594fSAndroid Build Coastguard Worker* `heap` 41*795d594fSAndroid Build Coastguard Worker 42*795d594fSAndroid Build Coastguard Worker* `interpreter` 43*795d594fSAndroid Build Coastguard Worker 44*795d594fSAndroid Build Coastguard Worker* `jdwp` 45*795d594fSAndroid Build Coastguard Worker 46*795d594fSAndroid Build Coastguard Worker* `jit` 47*795d594fSAndroid Build Coastguard Worker 48*795d594fSAndroid Build Coastguard Worker* `jni` 49*795d594fSAndroid Build Coastguard Worker 50*795d594fSAndroid Build Coastguard Worker* `monitor` 51*795d594fSAndroid Build Coastguard Worker 52*795d594fSAndroid Build Coastguard Worker* `oat` 53*795d594fSAndroid Build Coastguard Worker 54*795d594fSAndroid Build Coastguard Worker* `profiler` 55*795d594fSAndroid Build Coastguard Worker 56*795d594fSAndroid Build Coastguard Worker* `signals` 57*795d594fSAndroid Build Coastguard Worker 58*795d594fSAndroid Build Coastguard Worker* `simulator` 59*795d594fSAndroid Build Coastguard Worker 60*795d594fSAndroid Build Coastguard Worker* `startup` 61*795d594fSAndroid Build Coastguard Worker 62*795d594fSAndroid Build Coastguard Worker* `third-party-jni` 63*795d594fSAndroid Build Coastguard Worker 64*795d594fSAndroid Build Coastguard Worker* `threads` 65*795d594fSAndroid Build Coastguard Worker 66*795d594fSAndroid Build Coastguard Worker* `verifier` 67*795d594fSAndroid Build Coastguard Worker 68*795d594fSAndroid Build Coastguard Worker* `verifier-debug` 69*795d594fSAndroid Build Coastguard Worker 70*795d594fSAndroid Build Coastguard Worker* `image` 71*795d594fSAndroid Build Coastguard Worker 72*795d594fSAndroid Build Coastguard Worker* `systrace-locks` 73*795d594fSAndroid Build Coastguard Worker 74*795d594fSAndroid Build Coastguard Worker* `plugin` 75*795d594fSAndroid Build Coastguard Worker 76*795d594fSAndroid Build Coastguard Worker* `agents` 77*795d594fSAndroid Build Coastguard Worker 78*795d594fSAndroid Build Coastguard Worker* `dex` 79*795d594fSAndroid Build Coastguard Worker 80*795d594fSAndroid Build Coastguard WorkerThese are not particularly stable and new options might get added. Examine 81*795d594fSAndroid Build Coastguard Workerthe LogVerbosity struct definition and the parser for a up-to-date list. 82*795d594fSAndroid Build Coastguard Worker 83*795d594fSAndroid Build Coastguard Worker#### ART 84*795d594fSAndroid Build Coastguard Worker> `art -Xplugin:$ANDROID_HOST_OUT/lib64/libopenjdkjvmti.so '-agentpath:libenablevlog.so=class,profiler' -cp tmp/java/helloworld.dex -Xint helloworld` 85*795d594fSAndroid Build Coastguard Worker 86*795d594fSAndroid Build Coastguard Worker* `-Xplugin` and `-agentpath` need to be used, otherwise the agent will fail during init. 87*795d594fSAndroid Build Coastguard Worker* If using `libartd.so`, make sure to use the debug version of jvmti. 88*795d594fSAndroid Build Coastguard Worker 89*795d594fSAndroid Build Coastguard Worker> `adb shell setenforce 0` 90*795d594fSAndroid Build Coastguard Worker> 91*795d594fSAndroid Build Coastguard Worker> `adb push $ANDROID_PRODUCT_OUT/system/lib64/libenablevlog.so /data/local/tmp/` 92*795d594fSAndroid Build Coastguard Worker> 93*795d594fSAndroid Build Coastguard Worker> `adb shell am start-activity --attach-agent /data/local/tmp/libenablevlog.so=class,jit some.debuggable.apps/.the.app.MainActivity` 94