xref: /aosp_15_r20/art/tools/jvmti-agents/enable-vlog/README.md (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
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