VHAL'da hata ayıklama

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Bu makale, VHAL'ı geliştirirken hata ayıklama bilgilerinin nasıl alınacağını açıklar:

  • VHAL'ın mevcut durumunu boşaltın.
  • Dumpstate'e VHAL işlem dökümünü dahil edin.

Her ikisi de etkinleştirildiğinde, her öğe adb bugreport dahil edilir.

Ayrıca, car watchdog'a kaydolarak, iyi durumda değilse çalışma zamanı VHAL durumu alınabilir.

VHAL hata ayıklama bilgilerini dökümü

IVhicle.hal için hata ayıklamayı uygula

IVehicle::debug , lshal debug <interface> <options> çağrıldığında çağrılır. Seçeneklere göre VHAL dahili durumunu boşaltabilir veya VHAL'a gerekli işlemleri yapabilirsiniz.

Return<void> VehicleHal::debug(const hidl_handle& handle, const hidl_vec<hidl_string>& options) {
    if (handle.getNativeHandle() == nullptr || handle->numFds < 1) {
        ALOGE("Invalid parameters passed to debug()");
        return Void();
    }

    int fd = handle->data[0];

    // Process options
    if (options.size() == 0) {
        dump_VHAL_state(fd);
        return Void();
    }
    std::string option = options[0];
    if (EqualsIgnoreCase(option, "--help")) {
        print_out_help(fd);
    } else if (EqualsIgnoreCase(option, "--whateveroption")) {
        do_whatever_needed(fd, option);
    } else {
        dprintf(fd, "Invalid option: %s\n", option.c_str());
    }

    return Void();
}

VHAL'ı boşaltın

lshal boşaltmak için lshal kullanın. Sistem ayrıcalığı gereklidir.

shell$ adb shell lshal debug android.hardware.automotive.vehicle@2.0::IVehicle

HAL işlem dökümünü döküm durumuna dahil et

Android 10 QPR2 sürümünde, döküm durumu (veya hata raporu) başlatıldığında dumpstate işlem dökümüne dahil edilebilir.

Kurulum yapılandırması

Bir SELinux ilkesini yapılandırın

dump_extra_hal(hal_server_domain) dumpstate.te . vendor sepolicy klasöründe dumpstate.te yoksa dumpstate.te oluşturun.

shell$ cat dumpstate.te
dump_extra_hal(hal_vendor_special_control)
dump_extra_hal(hal_vendor_display_power)

HAL arabirimlerini listeleme

HAL arabirim adlarını ro.dump.hals.extra sistem özelliğine ekleyin. Çok sayıda isim virgülle ayrılmıştır. Android.mk veya ürün makefile , bu öğeler için en uygun konumlardır.

shell$ % cat vendor_product.mk
PRODUCT_PROPERTY_OVERRIDES += \
ro.dump.hals.extra=vendor.company.hardware.special.control@1.0::ISpecialControl,vendor.company.hardware.power.displaypower@1.0::IDisplayPower

HAL süreçleri dökümü

Sistem statusCall yakalamak için adb shell dumpstate veya adb bugreport bugreport'u arayın. Çıktı, belirtilen HAL arabirimlerinin işlem dökümünü içerecektir.

VHAL sağlığını izlemek için araba bekçi köpeğini etkinleştirin

Araba bekçisi, kayıtlı müşterilerin sağlık durumunu izler ve sağlıksız hale geldiklerinde kayıtlı müşterileri bırakır veya sonlandırır. VHAL'ı car watchdog'a kaydetmek için, bkz. Car Watchdog .