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

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

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

ניקוי קובצי cookie שנשמרו במטמון

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

adb shell cmd media.camera watch clear

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

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

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

adb shell cmd media.camera watch stop

פקודת dumpsys

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

adb shell dumpsys media.camera

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

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

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

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