enablevlog is a JVMTI agent designed for changing the VLOG options of a running process. Currently it only allows one to turn vlog options 'on'.
m libenablevlog
The libraries will be built for 32-bit, 64-bit, host and target. Below examples assume you want to use the 64-bit version.
Use libenablevlogs
if you wish to build a version without non-NDK dynamic dependencies.
The agent is loaded using -agentpath like normal. It takes arguments in the following format:
[vlog1[,vlog2[,...]]]
It will cause the runtime to act as though you had passed these after the -verbose:[...]
argument to dalvikvm
.
At the time of writing, the following events may be listened for with this agent
class
collector
compiler
deopt
gc
heap
interpreter
jdwp
jit
jni
monitor
oat
profiler
signals
simulator
startup
third-party-jni
threads
verifier
verifier-debug
image
systrace-locks
plugin
agents
dex
These are not particularly stable and new options might get added. Examine the LogVerbosity struct definition and the parser for a up-to-date list.
art -Xplugin:$ANDROID_HOST_OUT/lib64/libopenjdkjvmti.so '-agentpath:libenablevlog.so=class,profiler' -cp tmp/java/helloworld.dex -Xint helloworld
-Xplugin
and -agentpath
need to be used, otherwise the agent will fail during init.libartd.so
, make sure to use the debug version of jvmti.
adb shell setenforce 0
adb push $ANDROID_PRODUCT_OUT/system/lib64/libenablevlog.so /data/local/tmp/
adb shell am start-activity --attach-agent /data/local/tmp/libenablevlog.so=class,jit some.debuggable.apps/.the.app.MainActivity