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
[...]
---------------------------------------------------------------------------------------------------------------------------------------------------------------