Android Runtime (ART) Instrumentation

204 views
Skip to first unread message

fouf inou

unread,
Nov 9, 2015, 10:11:33 AM11/9/15
to Android Building
Hi,

I would like to instrument the AOSP and especially the ART in order to log all methods called by a targeted application.

For now, I have simply modified the art_method.cc in art/runtime/mirror with the following :

---------------------------------------------------------------------------------------------------------------------------------------------------------------
void ArtMethod::Invoke(Thread* self, uint32_t* args, uint32_t args_size, JValue* result, const char* shorty) {
     [...]
     LOG(INFO) << "DYNAMIC ANALYSIS : " << GetDeclaringClassDescriptor() << "." << GetName();
     [...]
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------

It works but it seems that it logs just a subset of the methods called. It seems like I am logging internal methods of the ART.
I though all methods execution would have crossed the ArtMethod::Invoke. Am I missing something ?

Example when I open the gallery application :

---------------------------------------------------------------------------------------------------------------------------------------------------------------
user@host - adb shell

shell@android:/ $ top | grep 19720
19720 3 0% S 18 1219840K 39920K fg u0_a28 com.android.gallery3d
19720 3 0% S 18 1219840K 39920K fg u0_a28 com.android.gallery3d
^C

shell@android:/ $ exit

user@host - adb logcat | grep 19720 | grep DYNAMIC
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/BinderProxy;.<init>
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/view/DisplayEventReceiver;.dispatchVsync
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/Binder;.execTransact
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/Binder;.execTransact
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/BinderProxy;.<init>
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/Binder;.execTransact
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/Binder;.execTransact
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/widget/TextView;.<init>
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/graphics/NinePatch$InsetStruct;.<init>
I/art (19720): DYNAMIC ANALYSIS : Ldalvik/system/VMRuntime;.newNonMovableArray
I/art (19720): DYNAMIC ANALYSIS : Ldalvik/system/VMRuntime;.addressOf
I/art (19720): DYNAMIC ANALYSIS : Landroid/graphics/Bitmap;.<init>
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/widget/TextView;.<init>
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/widget/TextView;.<init>
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
I/art (19720): DYNAMIC ANALYSIS : Landroid/view/DisplayEventReceiver;.dispatchVsync
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/widget/LinearLayout;.<init>
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/widget/TextView;.<init>
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/BinderProxy;.<init>
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/Binder;.execTransact
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/view/DisplayEventReceiver;.dispatchVsync
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/Binder;.execTransact
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Ljava/lang/ref/FinalizerReference;.add
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
I/art (19720): DYNAMIC ANALYSIS : Landroid/view/DisplayEventReceiver;.dispatchVsync
I/art (19720): DYNAMIC ANALYSIS : Landroid/graphics/Canvas;.setNativeBitmap
I/art (19720): DYNAMIC ANALYSIS : Landroid/graphics/Canvas;.setNativeBitmap
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
I/art (19720): DYNAMIC ANALYSIS : Landroid/os/Binder;.execTransact
I/art (19720): DYNAMIC ANALYSIS : Landroid/hardware/SystemSensorManager$SensorEventQueue;.dispatchSensorEvent
[...]
---------------------------------------------------------------------------------------------------------------------------------------------------------------

fouf inou

unread,
Nov 13, 2015, 10:58:37 AM11/13/15
to Android Building
Reply all
Reply to author
Forward
0 new messages