NDK כולל סקריפט מעטפת בשם ndk-gdb
להתחלת סשן ניפוי באגים מקומי בשורת הפקודה (בעבר gdb, עכשיו lldb).
משתמשים שמעדיפים להשתמש בממשק משתמש גרפי צריכים לקרוא במקום זאת את המסמכים בנושא ניפוי באגים ב-Android Studio.
דרישות
כדי שאפשר יהיה לבצע ניפוי באגים מקורי בשורת הפקודה, צריך לעמוד בדרישות הבאות:
- פיתוח האפליקציה באמצעות הסקריפט
ndk-build
. בסקריפטndk-gdb
אין תמיכה בשימוש בשיטה הקודמתmake APP=<name>
ליצירת גרסאות build. - כדי להפעיל ניפוי באגים באפליקציה בקובץ
AndroidManifest.xml
, צריך לכלול אלמנט<application>
שמגדיר את המאפייןandroid:debuggable
לערךtrue
. - פיתוח האפליקציה כך שתופעל ב-Android 2.2 (רמת Android API 8) ואילך.
- ניפוי באגים במכשיר או במהדמה עם Android מגרסה 2.2 ואילך.
למטרות ניפוי באגים, רמת ה-API היעד שאתם מגדירים בקובץ
AndroidManifest.xml
לא חשובה. - פיתוח האפליקציה במעטפת Unix. ב-Windows, משתמשים ב-Cygwin או בהטמעה הניסיונית של
ndk-gdb-py
Python. - צריך להשתמש ב-GNU Make בגרסה 3.81 ואילך.
שימוש
כדי להפעיל את הסקריפט ndk-gdb
, עוברים לספריית האפליקציה או לכל ספרייה שמתחתיה. לדוגמה:
cd $PROJECT $NDK/ndk-gdb
כאן, הערך $PROJECT
מפנה לתיקיית השורש של הפרויקט, והערך $NDK
מפנה לנתיב ההתקנה של NDK.
כשמפעילים את ndk-gdb
, הוא מגדיר את הסשן לחיפוש קובצי המקור וגרסת הסמלים או ניפוי הבאגים של הספריות המקומיות שנוצרו. אחרי שמתחברים לתהליך האפליקציה, הפקודה ndk-gdb
מפיקה סדרה ארוכה של הודעות שגיאה, ומציינת שהיא לא מצליחה למצוא ספריות מערכת שונות. זהו מצב תקין, כי מחשב המארח לא מכיל גרסאות של סמלים או ניפוי באגים של הספריות האלה במכשיר היעד. אפשר להתעלם מהודעות האלה.
בשלב הבא, ndk-gdb
מציג את ההנחיה הרגילה של lldb.
האינטראקציה עם ndk-gdb
מתבצעת באותו אופן שבו מתבצעת האינטראקציה עם lldb.
אם אתם לא מכירים את LLDB אבל מכירים את GDB, כדאי לעיין במיפוי הפקודות השימושי של GDB ל-LLDB (https://lldb.llvm.org/use/map.html).
הפונקציה ndk-gdb
מטפלת בתנאי שגיאה רבים, ומציגה הודעת שגיאה מפורטת אם היא מזהה בעיה. הבדיקות האלה כוללות בדיקה שהתנאים הבאים מתקיימים:
- בדיקה ש-ADB נמצא בנתיב.
- הבדיקה בודקת שהאפליקציה הוגדרה כניתנת לניפוי באגים במניפסט שלה.
- בדיקה אם אפשר לנפות באגים גם באפליקציה המותקנת במכשיר עם אותו שם חבילה.
כברירת מחדל, הפונקציה ndk-gdb
מחפשת תהליך בקשה שכבר פועל, ומציגה הודעת שגיאה אם לא מוצאים כזה. עם זאת, אפשר להשתמש באפשרות --start
או --launch=<name>
כדי להפעיל את הפעילות באופן אוטומטי לפני סשן ניפוי הבאגים. מידע נוסף זמין בקטע אפשרויות.
אפשרויות
כדי לראות את רשימת האפשרויות המלאה, מקלידים ndk-gdb --help
בשורת הפקודה. בטבלה 1 מפורטים כמה מהפונקציות הנפוצות ביותר, עם תיאורים קצרים.
טבלה 1. אפשרויות נפוצות של ndk-gdb והתיאורים שלהן.
הפעלת ndk-gdb
עם האפשרות הזו מפעילה את הפעילות הראשונה שאפשר להפעיל שמופיעה במניפסט של האפליקציה. כדי להפעיל את הפעילות הבאה שאפשר להפעיל, מקישים על --launch=<name>
. כדי להציג את רשימת הפעילויות שאפשר להפעיל, מריצים את הפקודה --launch-list
בשורת הפקודה.
אפשרות | Description> |
---|---|
--verbose |
האפשרות הזו מורה למערכת ה-build להדפיס מידע מפורט על ההגדרה של סשן ניפוי הבאגים המקורי. הוא נדרש רק לפתרון בעיות ניפוי באגים כשמנתח הבאגים לא מצליח להתחבר לאפליקציה, והודעות השגיאה שמוצגות ב- |
--force |
כברירת מחדל, הפקודה ndk-gdb מפסיקה את הפעולה אם היא מזהה שכבר פועל סשן ניפוי באגים מקומי אחר באותו מכשיר. האפשרות הזו מפסיקה את הסשן השני ומחליפת אותו בסשן חדש.
חשוב לזכור שהאפשרות הזו לא מפסיקה את האפליקציה בפועל שמתבצע בה ניפוי באגים, וצריך להפסיק אותה בנפרד. |
--start |
כשמפעילים את |
--launch=<name> |
האפשרות הזו דומה ל- |
--launch-list |
האפשרות הזו מאפשרת להדפיס את רשימת כל שמות הפעילויות שניתן להפעיל שמופיעים במניפסט של האפליקציה. ב- |
--project=<path> |
האפשרות הזו מציינת את ספריית הפרויקט של האפליקציה. האפשרות הזו שימושית אם רוצים להפעיל את הסקריפט בלי לעבור קודם לספריית הפרויקט. |
--port=<port> |
כברירת מחדל, |
--adb=<file> |
האפשרות הזו מציינת את קובץ ההפעלה של הכלי adb. צריך להוסיף אותו רק אם לא הגדרתם את הנתיב כך שיכלול את קובץ ההפעלה הזה. |
-d -e -s <serial> |
הדגלים האלה דומים לפקודות adb עם אותם שמות. מגדירים את הדגלים האלה אם יש כמה מכשירים או מכונות וירטואליות שמחוברים למכונה המארחת. המשמעות שלהם היא:
לחלופין, אפשר להגדיר את משתנה הסביבה |
--exec=<file> -x <file> |
האפשרות הזו מורה ל- |
--nowait |
משביתים את ההשהיה של קוד Java עד שמתחבר מנתח הבאגים. העברת האפשרות הזו עשויה לגרום למעבד הבאגים לפספס נקודות עצירה מוקדמות. |
--tui
-t |
מפעילים את ממשק המשתמש מסוג טקסט אם הוא זמין. |
--gnumake-flag=<flag> |
האפשרות הזו היא דגל (או דגלים) נוסף שצריך להעביר למערכת |
הערה: שלוש האפשרויות האחרונות בטבלה הזו הן רק לגרסה של ndk-gdb
ל-Python.