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

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

פקודה לצפייה

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

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

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

הצגת מידע על מעקב תגים

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

adb shell cmd media.camera watch dump

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

פלט לדוגמה:

$ 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: ארגומנט אופציונלי. הערך באלפיות השנייה של פרק הזמן בין רענון המידע. אם לא מעבירים ערך, ערך ברירת המחדל הוא 1,000.

הפקודה הזו מדפיסה מידע על מעקב תגים בזמן אמת. כדי לצאת, מקישים על 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 מספקת מגוון רחב של נתוני ניפוי באגים משירות המצלמה. הפקודה הבאה יוצרת dump של כל נתוני הניפוי של שירות המצלמה:

adb shell dumpsys media.camera

הפקודה dumpsys מאפשרת גם לצלם dump של מעקב אחרי תגים מלקוחות פתוחים. עם זאת, dumpsys לא מספק קובצי dump של מעקב תגים מלקוחות סגורים. דוגמאות לשימוש ב-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'