Düzey, sistemin bir bu işlemin sonucu ve bu sistem tarafından çağrılan öğelerin döndürdüğü işlemlerdir.
strace oluşturma
strace'i derlemek için aşağıdakileri çalıştırın:
mmma -j6 external/strace
Çalışan bir sürece ekleme
strace'in en basit ve en yaygın kullanım alanı, çalışan bir işleme eklemektir. Bunu aşağıdaki yöntemlerle yapabilirsiniz:
adb shell strace -f -p PID
-f
işareti, strace'e öğedeki tüm ileti dizilerine eklemesini söyler
süreci ve daha sonra ortaya çıkan yeni ileti dizileri.
Tipik bir işlem çok sayıda sistem çağrısı yapar. Bu nedenle, yalnızca ilgilendiğiniz verileri nasıl toplayacağınızı öğrenmek için strace man sayfasını incelemeniz gerekir.
Uygulamada kullanma
Bir uygulamada strace kullanmak için:
- Cihazı, strace'i çalıştırabilecek şekilde ayarlayın. Kök olmanız, SELinux'u devre dışı bırakmanız ve yeniden başlatmanız gerekir
seccomp filtresini kaldırın. Aksi takdirde, strace'in çalışmasını engelleyecek:
adb root
adb shell setenforce 0
adb shell stop
adb shell start
- strace günlükleri
uygulamanın kullanıcı kimliği:
adb shell mkdir -m 777 /data/local/tmp/strace
- İzlenecek işlemi seçin ve başlatın:
adb shell setprop wrap.com.android.calendar '"logwrapper strace -f -o /data/local/tmp/strace/strace.com.android.calendar.txt"'
- İşlemi normal şekilde başlatın.
Zigotta kullanma
Zigot üzerinde strace'i kullanmak için ilgili init.rc
zygote satırını düzeltin (adb shell setenforce 0
gerekir):
cd system/core/
patch -p1 <<EOF --- a/rootdir/init.zygote32.rc +++ b/rootdir/init.zygote32.rc @@ -1,4 +1,4 @@ -service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server +service zygote /system/bin/strace -o /data/local/tmp/zygote.strace /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server class main socket zygote stream 660 root system onrestart write /sys/android_power/request_state wake EOF
Android başlatma sırasında strace günlükleri alma
Android başlatma sırasında strace günlüklerini almak için aşağıdaki değişiklikleri yapın:
- İşlem adı
zygote
yerinestrace
olarak değiştiğinden,strace
için SELinuxfile_context
eksik olduğundan söz konusu hizmet başlatılamayabilir. Çözümsystem/sepolicy/private/file_contexts
bölgesinde strace için yeni satır ekle ve orijinal dosya bağlamını kopyalayın. Örnek:/dev/socket/zygote u:object_r:zygote_socket:s0 + /system/bin/strace u:object_r:zygote_socket:s0
- kernel veya bootconfig parametresini ekleyin, ardından cihazı SELinux izin verici modunda önyükleyin. Şunları yapabilirsiniz:
bunu, şuraya
androidboot.selinux=permissive
ekleyerek yapabilirsiniz:BOARD_KERNEL_CMDLINE
veya Android'deBOARD_BOOTCONFIG
5.10 veya daha yeni çekirdeklerle 12. (Bu değişkenbuild/core/Makefile
içinde salt okunur olur, ancak her zaman/device/*/BoardConfig
altında mevcuttur.)
Pixel (sailfish) cihaz örneği/device/google/marlin/sailfish/BoardConfig.mk
: Değişikliği yaptıktan sonra, önyükleme görüntüsünü derleyip flaşlayın. Böylece cihaz izin verici modda önyüklenir.- BOARD_KERNEL_CMDLINE := .... androidboot.hardware=sailfish ... +BOARD_KERNEL_CMDLINE := .... androidboot.hardware=sailfish ... androidboot.selinux=permissive