ניפוי באגים במצלמה

בדף הזה מתוארים הכלים לניפוי באגים בשירות המצלמה, שמאפשרים לראות שינויים בבקשת הצילום ובערכים של התוצאות שנשלחים אל HAL המצלמה וממנו. שירות המצלמה כולל את הפקודות watch ו-dumpsys. הפקודה watch זמינה במכשירים עם Android מגרסה 13 ואילך, ומאפשרת לקבוע מתי יתבצע מעקב אחרי התגים ותהיה גישה אליהם, להציג תצוגה מקדימה של נתוני גרסת dump של מעקב אחר תגים מלקוחות פתוחים ולצפות בנתוני גרסת dump שנשמרו במטמון מלקוחות סגורים. הפקודה dumpsys מאפשרת גישה לניפוי באגים אבל לא מספק קובצי SQL של מעקב אחרי תגים מלקוחות סגורים.

פקודת השעון

בקטע הזה נסביר איך להשתמש בפקודה watch ונציג דוגמאות.

התחלת מעקב אחר תגים

כדי להתחיל לעקוב אחרי התגים, צריך להשתמש בכלים הבאים:

adb shell cmd media.camera watch start -m <tags> [-c <clients>]

דוגמה:

adb shell cmd media.camera watch start \
-m android.control.effectMode,android.control.aeMode \
-c com.google.android.GoogleCamera,com.android.chrome

ארגומנטים:

  • tags: רשימה מופרדת בפסיקים של התגים שרוצים לעקוב אחריהם. גם מקבל הקיצור 3a, שבו 3a מתייחס לקבוצה של כל ה-android.control.* תגים הקשורים ל-AF, AE ו-AWB (לרשימה המלאה של התגים, ראו TagMonitor.cpp).
  • clients: ארגומנט אופציונלי. רשימה מופרדת בפסיקים של שמות חבילות הלקוח שאחריהם מתבצע מעקב אחר תגים. צפייה בכל הלקוחות, אם אין לקוח הועבר, או אם all מופיע ברשימת הלקוחות.

הפקודה הזו מפעילה מעקב אחרי תגים בלקוחות פתוחים ובכל הלקוחות. שנפתחות לאחר מכן (עד קריאה ל-stop). אחרי הקריאה אל start, שירות המצלמה שומר במטמון קובצי אימג' של מעקב אחרי תגים מלקוחות כשהלקוחות סגירה.

אם לא קוראים ל-start, שירות המצלמה לא עוקב אחרי תגים של לקוחות ולא מאחסן במטמון דיווחים על מעקב אחר תגים. אם מועבר all פרמטר clients, שירות המצלמה עוקב אחר תגים ושמירה במטמון קובצי SQL מכל הלקוחות.

מחיקת מידע על מעקב אחרי תגים

כדי להוריד את הנתונים של מעקב אחרי תגים, משתמשים ב:

adb shell cmd media.camera watch dump

הפקודה הזו מעתיקה את פרטי המעקב של התג לפלט הסטנדרטי ואז יציאות. הפקודה מדפיסה את נתוני הדמפ של מעקב התגים שנשמרו במטמון מלקוחות שנסגרו מאז start (או מ-clear האחרונה) ואת נתוני הדמפ האחרונים של מעקב התגים מלקוחות פתוחים.

פלט לדוגמה:

$ adb shell cmd media.camera watch dump
Client: com.android.chrome (active)
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.aeMode: [ON] output stream ids:  0
1:com.android.chrome  f0:532642803202286ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  0
..
Client: com.google.android.GoogleCamera (cached)
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.aeMode: [ON] output stream ids:  0  3  1  2
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  1  3  0
0:com.google.android.GoogleCamera  f0:532601698728552ns:             REQ:android.control.awbMode: [AUTO] output stream ids:  0  3  1  2
...

תצוגה מקדימה של פרטי המעקב אחרי התגים בזמן אמת

כדי לראות תצוגה מקדימה של המידע על מעקב אחרי תגים בזמן אמת, משתמשים ב:

adb shell cmd media.camera watch live [-n refresh_interval_ms]

דוגמה:

adb shell cmd media.camera watch live -n 250

ארגומנטים:

  • refresh_interval_ms: ארגומנט אופציונלי. מרווח באלפיות שנייה עד לרענן את המידע בכתובת. ערך ברירת המחדל הוא 1000 אם לא מועבר ערך.

הפקודה הזו מדפיסה מידע על מעקב התגים בזמן אמת. כדי לצאת, מקישים על return/enter.

פלט לדוגמה:

$ adb shell cmd media.camera watch live
Press return to exit...

0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.aeMode: [ON] output stream ids:  1  3  0  2
0:com.google.android.GoogleCamera  f0:533016991302201ns:             REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids:  2  0  3  1
...
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 3                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns: 2                          RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera  f0:533017066793915ns:                            RES:android.control.afState: [PASSIVE_SCAN]

ניקוי תמונת מצב שנשמרה במטמון

כדי לנקות את כל קובצי ה-Dump של מעקב אחר תגים שנשמרו במטמון, משתמשים ב:

adb shell cmd media.camera watch clear

הפקודה הזו לא מפסיקה את המעקב אחרי התגים.

הפסקת המעקב אחר תגים

כדי להפסיק את המעקב אחר התגים בכל הלקוחות ולנקות את כל מאגרי הנתונים הזמניים שמוחזקים לשמירה במטמון קובצי תמונה של מעקב אחרי תגים, משתמשים ב:

adb shell cmd media.camera watch stop

פקודת dumpsys

הפקודה dumpsys מספקת מגוון רחב של פרטי ניפוי באגים מהמצלמה לאחר השיפור. הפקודה הבאה מתעדת את כל נתוני הדמפ של ניפוי הבאגים משירות המצלמה:

adb shell dumpsys media.camera

הפקודה dumpsys מאפשרת גם לתעד דפים פתוחים של מעקב אחרי תגים הלקוחות שלנו. עם זאת, dumpsys לא מספק דיווחים על מעקב אחר תגים מלקוחות סגורים. ריכזנו כאן דוגמאות לשימוש ב-dumpsys לצורך מעקב אחרי תגים:

  • איך מתעדים דיווחים על מעקב אחר תגים מכל הלקוחות הפתוחים:

    adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
  • הצגת תצוגה מקדימה של מידע בזמן אמת על מעקב התגים באמצעות הפקודה watch ב-Linux:

    watch -n 1 -c 'adb shell dumpsys media.camera -m 3a | grep -A50 Monitored'