שימוש באגים

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

דף זה מפרט את השימוש ב- LLDB או GDB לפיתוח מערכת ההפעלה. לפיתוח אפליקציה, עיין במקום זאת באיתור באגים באפליקציה שלך , המסביר כיצד להשתמש ב-Android Studio GUI (מבוסס על LLDB).

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

דרישות מוקדמות

כדי להשתמש באגים:

  • הגדר את סביבת הבנייה עם הפקודה הרגילה envsetup.sh .
  • הפעל את אותה פקודת lunch שבה השתמשת בעת הבנייה.

לעזרה נוספת בהגדרת הסביבה שלך, ראה הגדרת סביבה .

איתור באגים באפליקציות או תהליכים הפועלים

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

gdbclient.py -p 1234

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

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

כדי לנפות באגים בתהליך כשהוא מתחיל, השתמש ב- gdbclient.py עם האפשרות -r . לדוגמה, כדי לנפות באגים ls /bin , הפעל את זה על המארח:

gdbclient.py -r /system/bin/ls /bin

לאחר מכן, הזן continue בהנחיה של מאתר הבאגים.

אתחול אפליקציית ניפוי באגים

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

כדי לנפות באגים באתחול האפליקציה, השתמש באפשרויות המפתחים בהגדרות כדי להורות לאפליקציה להמתין לצירוף מאתר באגים של Java:

  1. עבור אל הגדרות > אפשרויות מפתח > בחר אפליקציית ניפוי באגים ובחר את האפליקציה שלך מהרשימה, ולאחר מכן לחץ על המתן לאיפוי באגים .
  2. הפעל את האפליקציה, מהמפעיל או באמצעות שורת הפקודה להפעלה:
    adb shell am start -a android.intent.action.MAIN -n APP_NAME/.APP_ACTIVITY
    
  3. המתן עד שהאפליקציה תיטען ותופיע תיבת דו-שיח שאומרת לך שהאפליקציה ממתינה לניפוי באגים.
  4. צרף gdbserver / gdbclient כרגיל, הגדר נקודות עצירה ולאחר מכן המשך בתהליך.

כדי לאפשר לאפליקציה לפעול, צרף מנפה באגים של Java Debug Wire Protocol (JDWP) כגון Java Debugger (jdb):

adb forward tcp:12345 jdwp:XXX  # (Where XXX is the PID
of the debugged process.)
jdb -attach localhost:12345

איתור באגים באפליקציות או תהליכים שקורסים

אם אתה רוצה שה- debuggerd ישהה ​​תהליכים שקרסו כדי שתוכל לצרף באגים, הגדר את המאפיין המתאים:

  • אחרי Android 11
    adb shell setprop debug.debuggerd.wait_for_debugger true
    
  • Android 11
    adb shell setprop debug.debuggerd.wait_for_gdb true
    
  • אנדרואיד 6.0 מרשמלו ו-
    adb shell setprop debug.db.uid 999999
    
    תחתון7

בסיום פלט הקריסה הרגיל, debuggerd מספק הוראות העתקה והדבקה ב-logcat המציגות כיצד לחבר את מאפר הבאגים לתהליך התרסק.

איתור באגים ללא סמלים

עבור ARM של 32 סיביות, אם אין לך סמלים, gdb לא יכול לקבוע איזה סט הוראות הוא מפרק (ARM או Thumb). כדי לציין את ערכת ההוראות שנבחרה כברירת מחדל כאשר חסר מידע על סמלים, הגדר את המאפיין הבא:

set arm fallback-mode arm  # or thumb

איתור באגים עם קוד VS

LLDB תומך בקוד ניפוי באגים בפלטפורמת Visual Studio Code . אתה יכול להשתמש בממשק ה-VS Code debugger במקום בממשק LLDB CLI כדי לשלוט ולאפות באגים בקוד מקורי הפועל במכשירים.

לפני השימוש ב- VS Code לניפוי באגים, התקן את התוסף CodeLLDB .

כדי לנפות באגים בקוד באמצעות קוד VS:

  1. ודא שכל חפצי הבנייה (כגון סמלים) הנדרשים להפעלת gdbclient.py או lldbclient.py קיימים.
  2. הפעל את הפקודה הבאה:
    lldbclient.py --setup-forwarding
          vscode-lldb ANY_OTHER_FLAGS -p pid | -n proc-name | -r ...

    פעולה זו מדפיסה אובייקט JSON ו- lldbclient.py ממשיך לפעול. זה צפוי; אל תהרוג את התוכנית lldbclient.py .

    הדגל -r חייב להיות הדגל האחרון אם הוא קיים בגלל האופן שבו הדגלים מופרחים על ידי הכלי.

  3. בלשונית איתור באגים בקוד VS, בחר הוסף תצורה ולאחר מכן בחר LLDB: הפעלה מותאמת אישית . פעולה זו פותחת קובץ launch.json ומוסיפה אובייקט JSON חדש לרשימה.
  4. מחק את תצורת ניפוי הבאגים החדשה שנוספה.
  5. העתק את אובייקט ה-JSON שהודפס על ידי lldbclient.py והדבק אותו באובייקט שזה עתה מחקת. שמור את השינויים.
  6. כדי לטעון מחדש את החלון כדי לרענן את רשימת באגים, הקש Ctrl+Shift+P והקלד reload window .
  7. בחר את תצורת ניפוי הבאגים החדשה ולחץ על הפעלה . מאתר הבאגים אמור להתחבר לאחר 10 עד 30 שניות.
  8. כשתסיים לנפות באגים, עבור אל הטרמינל שבו פועל lldbclient.py והקש Enter כדי לסיים את התוכנית lldbclient.py .