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

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

לכדו ניסיון אחד במקום יום שלם של היסטוריה

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

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

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

קודם ייצאו את היומן של הלקוח עצמו

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

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

הוסיפו logcat רק לשאלה שאתם יכולים לנסח בשמה

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

המסלול הנתמך הוא הפעלת ADB מורשית ממחשב שאתם שולטים בו. הפעילו אפשרויות מפתחים וניפוי באגים ב-USB, חברו את הכבל, ואשרו את דיאלוג טביעת האצבע RSA במכשיר; אם הבקשה הזו נסגרת, כל פקודה לאחר מכן נכשלת עם unauthorized ולא מתחיל שום לכידה.

ודאו שהמכשיר באמת שם לפני שאתם משקיעים זמן בלכידה. adb devices אמור להדפיס את המספר הסידורי ואחריו את המילה device, וכל מה שמציג offline או unauthorized צריך קודם לסדר את הכבל, את הבקשה או את מנהל ההתקן.

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

adb logcat -v threadtime -b main,system,crash > attempt.txt

סננו לפי זמן ותגית במקום לפי המילה VPN

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

צמצמו קודם את החלון, אחר כך את העדיפות, ואחר כך את התגית. כשאתם צריכים רק את מה שקרה אחרי רגע ידוע, adb logcat -v threadtime -t '11-03 20:14:00.000' משחזר את הזנב האחרון מאותה נקודה, ופורמט threadtime שומר על חותמות זמן ברות השוואה לייצוא של הלקוח עצמו.

אם אתם מכירים את חבילת הלקוח, עקבו אחר התהליך שלו במקום לנחש תגיות. adb shell pidof com.vendor.client מחזיר PID ו-adb logcat --pid=1234 -v threadtime מדפיס רק את התהליך הזה, בעוד adb logcat -g מראה כמה מקום יש לכל מאגר לפני שהוא מתחיל לדרוס.

הסתירו סודות, ואז מסרו חבילה אחת קוהרנטית

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

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

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

מאמרים קשורים