שימוש בבאגים

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

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

תנאים מוקדמים

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

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

לקבלת עזרה נוספת עם הקמת הסביבה שלך, לראות להקים הסביבה .

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

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

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

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

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

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

set arm fallback-mode arm  # or thumb

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

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

לפני השימוש VS קוד לאיתור באגים, להתקין את הסיומת 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. כשאתה באגים done והמודעות, ללכת ריצה מסוף lldbclient.py והקישו Enter כדי לסיים את lldbclient.py התוכנית.