שימוש בבאגים

פרטים בעמוד זה באמצעות 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

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

ניפוי באגים בהפעלת תהליך מקורי

כדי לאתר באגים התהליך כפי שהוא מתחיל, שימוש 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 במקום בממשק LLDB CLI כדי לשלוט באגים על קוד מקורי הפועל במכשירים.

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

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

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

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

  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 התוכנית.