تفاصيل هذه الصفحة باستخدام LLDB أو GDB لتطوير نظام التشغيل. لتطوير التطبيق ، راجع تصحيح أخطاء تطبيقك بدلاً من ذلك ، والذي يشرح كيفية استخدام Android Studio GUI (استنادًا إلى LLDB).
تم إهمال GDB وستتم إزالته قريبًا. إذا كنت تقوم بالتبديل من GDB إلى LLDB ، فمن المحتمل أن تبدأ بقراءة برنامج LLDB التعليمي . إذا كنت مستخدمًا خبيرًا لـ GDB ، فإن خريطة أوامر GDB إلى LLDB مفيدة جدًا أثناء الانتقال.
المتطلبات الأساسية
لاستخدام مصحح الأخطاء:
- قم بإعداد بيئة البناء باستخدام الأمر
envsetup.sh
المعتاد. - قم بتشغيل نفس أمر
lunch
الذي استخدمته عند البناء.
لمزيد من المساعدة في إعداد البيئة الخاصة بك ، راجع إعداد البيئة .
تصحيح أخطاء التطبيقات أو العمليات قيد التشغيل
للاتصال بتطبيق قيد التشغيل أو برنامج خفي أصلي ، استخدم gdbclient.py
مع معرف المنتج. على سبيل المثال ، لتصحيح العملية باستخدام PID 1234 ، قم بتشغيل هذا على المضيف:
gdbclient.py -p 1234
يقوم البرنامج النصي بإعداد إعادة توجيه المنفذ ، ويبدأ كعب التصحيح البعيد المناسب على الجهاز ، ويبدأ مصحح الأخطاء على المضيف ، ويكوّنه للعثور على الرموز ، ويوصله بكعب التصحيح البعيد.
تصحيح بدء تشغيل العملية الأصلية
لتصحيح أخطاء عملية ما عند بدئها ، استخدم gdbclient.py
مع الخيار -r
. على سبيل المثال ، لتصحيح أخطاء ls /bin
، قم بتشغيل هذا على المضيف:
gdbclient.py -r /system/bin/ls /bin
بعد ذلك ، أدخل " continue
" في موجه مصحح الأخطاء.
تصحيح أخطاء بدء تشغيل التطبيق
في بعض الأحيان تريد تصحيح أخطاء تطبيق ما عند بدء تشغيله ، على سبيل المثال عندما يكون هناك عطل وتريد التنقل عبر التعليمات البرمجية لمعرفة ما حدث قبل التعطل. يعمل الإرفاق في بعض الحالات ، ولكن في حالات أخرى يكون مستحيلًا لأن التطبيق يتعطل قبل أن تتمكن من إرفاقه. لا يعمل logwrapper
(المستخدم strace
) دائمًا لأن التطبيق قد لا يكون لديه أذونات لفتح منفذ ، ويرث gdbserver
هذا التقييد.
لتصحيح أخطاء بدء تشغيل التطبيق ، استخدم خيارات المطور في الإعدادات لإرشاد التطبيق إلى انتظار إرفاق مصحح أخطاء Java:
- انتقل إلى الإعدادات> خيارات المطور> حدد تطبيق التصحيح واختر التطبيق الخاص بك من القائمة ، ثم انقر فوق انتظار مصحح الأخطاء .
- ابدأ تشغيل التطبيق ، إما من المشغل أو باستخدام سطر الأوامر للتشغيل:
adb shell am start -a android.intent.action.MAIN -n APP_NAME/.APP_ACTIVITY
- انتظر حتى يتم تحميل التطبيق وسيظهر مربع حوار يخبرك أن التطبيق ينتظر مصحح الأخطاء.
- أرفق
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
- Android 6.0 Marshmallow و
adb shell setprop debug.db.uid 999999
في نهاية إخراج التعطل المعتاد ، يوفر debuggerd
إرشادات للنسخ واللصق في logcat توضح كيفية توصيل مصحح الأخطاء بالعملية المعطلة.
التصحيح بدون رموز
بالنسبة إلى ARM 32 بت ، إذا لم يكن لديك رموز ، فلن يتمكن gdb
من تحديد مجموعة التعليمات التي يتم تفكيكها (ARM أو Thumb). لتحديد مجموعة التعليمات المختارة كإعداد افتراضي عندما تكون معلومات الرمز مفقودة ، قم بتعيين الخاصية التالية:
set arm fallback-mode arm # or thumb
التصحيح باستخدام رمز VS
يدعم LLDB رمز النظام الأساسي لتصحيح الأخطاء في Visual Studio Code . يمكنك استخدام الواجهة الأمامية لمصحح الأخطاء VS Code بدلاً من واجهة LLDB CLI للتحكم في التعليمات البرمجية الأصلية التي تعمل على الأجهزة وتصحيحها.
قبل استخدام VS Code لتصحيح الأخطاء ، قم بتثبيت ملحق CodeLLDB .
لتصحيح التعليمات البرمجية باستخدام رمز VS:
- تأكد من وجود جميع عناصر البناء (مثل الرموز) المطلوبة لتشغيل
gdbclient.py
أوlldbclient.py
. - قم بتشغيل الأمر التالي:
lldbclient.py --setup-forwarding vscode-lldb ANY_OTHER_FLAGS -p pid | -n proc-name | -r ...
يؤدي هذا إلى طباعة كائن JSON ويستمر تشغيل
lldbclient.py
. هذا متوقع. لا تقتل برنامجlldbclient.py
.يجب أن تكون العلامة
-r
هي العلامة الأخيرة إذا كانت موجودة بسبب كيفية تحليل العلامات بواسطة الأداة. - في علامة تبويب تصحيح الأخطاء في VS Code ، حدد إضافة تكوين ، ثم حدد LLDB: Custom Launch . هذا يفتح ملف
launch.json
ويضيف كائن JSON جديدًا إلى القائمة. - احذف تكوين مصحح الأخطاء المضاف حديثًا.
- انسخ كائن JSON الذي تمت طباعته بواسطة
lldbclient.py
والصقه في العنصر الذي حذفته للتو. احفظ التغييرات. - لإعادة تحميل النافذة لتحديث قائمة مصحح الأخطاء ، اضغط على Ctrl + Shift + P واكتب
reload window
. - حدد تكوين مصحح الأخطاء الجديد واضغط على تشغيل . يجب أن يتصل مصحح الأخطاء بعد 10 إلى 30 ثانية.
- عند الانتهاء من تصحيح الأخطاء ، انتقل إلى المحطة الطرفية التي تقوم بتشغيل
lldbclient.py
واضغط على Enter لإنهاء برنامجlldbclient.py
.