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