توفّر أداة استوديو Android for Platform (ASfP) أداة تصحيح أخطاء فعّالة تتيح لك إجراء ما يلي:
- اختَر جهازًا لتصحيح الأخطاء عليه.
- ضبط نقاط توقّف في رموز Java وKotlin وC/C++ وRust البرمجية
- فحص المتغيرات وتقييم التعبيرات في وقت التشغيل
قبل استخدام برنامج تصحيح الأخطاء، يجب تثبيت ذاكرة ROM لإصدارك على جهاز أو محاكي.
تصحيح أخطاء عملية التطبيق (Java/Kotlin)
لتصحيح أخطاء عملية تطبيق Java أو Kotlin، اتّبِع الخطوات التالية:
ضبط نقاط توقّف في رمز Java أو Kotlin البرمجي ضِمن "استوديو Android للبرامج"
اختَر تشغيل (Run) > ربط مصحّح الأخطاء بعملية Android (Attach Debugger to Android Process) من القائمة.
في مربّع الحوار اختيار العملية، تأكَّد من ضبط نوع تصحيح الأخطاء على Java فقط.
اختَر جهازك من القائمة.
اختَر عملية التطبيق المحدّدة التي تريد تصحيح أخطائها.
انقر على موافق.
تفاعَل مع التطبيق على جهازك للوصول إلى نقاط التوقف.
تصحيح أخطاء عملية النظام (C/C++)
لتصحيح أخطاء عملية نظام مكتوبة بلغة C أو C++، اتّبِع الخطوات التالية:
تأكَّد من أنّ لديك جهازًا واحدًا أو محاكيًا واحدًا قيد التشغيل.
افتح نافذة أوامر طرفية ونفِّذ
adb rootمن جذر عملية استخراج AOSP:bash adb root
اضبط نقاط توقّف في رمز C/C++ ضِمن ASfP.
اختَر تشغيل (Run) > ربط مصحّح الأخطاء بعملية Android (Attach Debugger to Android Process) من القائمة.
في مربّع الحوار اختيار العملية، غيِّر نوع تصحيح الأخطاء إلى Native Only أو Dual (Java + Native).
ضَع علامة في المربّع عرض جميع العمليات للاطّلاع على عمليات النظام.
اختَر جهازك من القائمة.
اختَر عملية النظام المحدّدة التي تريد تصحيح أخطائها (مثل
surfaceflingerأوsystem_server).انقر على موافق.
تفاعَل مع الجهاز لتحديد نقاط التوقّف.
تصحيح الأخطاء في Rust
تتيح "منصة Android Studio للبرامج الإضافية" تصحيح أخطاء Rust باستخدام "بروتوكول تصحيح الأخطاء" (DAP) مع LLDB. يوضّح هذا القسم كيفية إعداد CodeLLDB كخادم Debug Adapter Server وتصحيح أخطاء رمز Rust على المضيف وعلى جهاز Android.
إعداد CodeLLDB كخادم محوّل تصحيح الأخطاء
أنشئ إعدادات تشغيل/تصحيح أخطاء جديدة لبروتوكول Debug Adapter Protocol:
- انقر على تشغيل > تعديل الإعدادات (Run > Edit Configurations) من القائمة.
- انقر على الزر +.
- اختَر تصحيح بروتوكول المحوّل.
في علامة التبويب "الخادم"، انقر على إنشاء خادم جديد.
في مربّع الحوار الذي تم فتحه حديثًا، انقر على اختيار نموذج واختَر CodeLLDB من القائمة.
بعد اختيار نموذج CodeLLDB، تتم إضافة الخادم الجديد مع إعدادات محدّدة مسبقًا.
- فعِّل التتبُّع المطوَّل من خلال اختيار مطوَّل في القائمة المنسدلة التتبُّع.
- أضِف متغيّر بيئة يحدّد مسار
lldb-serverفي الحِزم المسبقة الإنشاء لمصدر Android:
LLDB_DEBUGSERVER_PATH=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/runtimes_ndk_cxx/x86_64/lldb-server ``` Replace `REPO_ROOT` with the absolute path to your Android source checkout. To find `CLANG_VERSION`, run the `get_clang_version.py` script from the root of your Android source tree: ```bash ./build/soong/scripts/get_clang_version.py- لا تغيِّر قسم
<<insert base directory>>.
تصحيح أخطاء ملفات Rust الثنائية على الجهاز المضيف
- افتح علامة التبويب الإعداد في إعدادات تشغيل/تصحيح أخطاء Debug Adapter Protocol.
- اختَر تشغيل كـ وضع تصحيح الأخطاء.
- عدِّل دليل العمل واختَر ملف البرنامج الثنائي الذي تريد تصحيح أخطائه.
- انقر على حسنًا لحفظ الإعداد.
- ابدأ جلسة تصحيح الأخطاء بالنقر على رمز تصحيح الأخطاء بجانب عملية الإعداد.
عند تشغيل هذا البرنامج لأول مرة، سيتم تنزيل CodeLLDB. من المفترض أن تظهر لك عمليات تتبُّع DAP في وحدة التحكّم. يجب أن يتم الوصول إلى نقاط التوقف التي تم ضبطها في رمز Rust كما هو متوقع.
تصحيح أخطاء ملفات Rust الثنائية على جهاز Android (وضع "ربط")
العثور على معرّف العملية: حدِّد معرّف العملية (PID) للتطبيق الذي تريد تصحيح أخطائه على جهاز Android.
ابدأ تشغيل lldb-server على الجهاز: من جذر شجرة مصدر Android، شغِّل النص البرمجي
lldbclient.py، واستبدِل<PID>برقم تعريف العملية:lldbclient.py --setup-forwarding vscode-lldb -p <PID>يعمل هذا النص البرمجي على إرسال
lldb-serverالصحيح إلى الجهاز، وبدء تشغيله، وإعداد إعادة توجيه المنفذ (المنفذ 5039 للمضيف إلى الجهاز)، وإخراج إعدادات JSON الخاصة بأداة DAP اللازمة للخطوات التالية. يُرجى إبقاء هذه النافذة الطرفية مفتوحة.ابدأ تشغيل CodeLLDB Debug Adapter على المضيف:
- انتقِل إلى دليل إضافة CodeLLDB (الإعداد التلقائي:
~/.lsp4ij/dap/codelldb/extension/adapter). - اضبط متغيّرات البيئة المطلوبة وابدأ تشغيل خادم المحوّل، مع استبدال
REPO_ROOTوCLANG_VERSIONكما هو محدّد في إعداد الخادم:
# Sets PYTHONHOME env variable export PYTHONHOME=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3 # Tell the dynamic linker where to find python libs export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3/lib # Starts the CodeLLDB Debugger Adapter server on port 1234 ./codelldb --liblldb REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/lib/liblldb.so --port 1234- انتقِل إلى دليل إضافة CodeLLDB (الإعداد التلقائي:
إعداد برنامج ASfP DAP:
- ارجع إلى إعدادات التشغيل/تصحيح الأخطاء في Debug Adapter Protocol في "استوديو Android" على Pixel.
- انقر على علامة التبويب الإعدادات.
- اضبط وضع تصحيح الأخطاء على ربط.
- اضبط العنوان على
localhost. - اضبط المنفذ على
1234. - الصِق ناتج JSON من الأمر
lldbclient.py(الخطوة 2) في حقل مَعلمات DAP (ملف JSON).
انقر على تصحيح الأخطاء لبدء جلسة تصحيح الأخطاء.
تحديد المشاكل وحلّها
- إذا ظهر لك الخطأ
error: Connection shut down by remote side while waiting for reply to initial handshake packet، أنهِ جلسة تصحيح الأخطاء الحالية، وأعِد تشغيلlldb-serverعلى الجهاز ومحوّل CodeLLDB على المضيف.