استخدام المصححات

تفاصيل هذه الصفحة باستخدام 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:

  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 أن يوقف العمليات المعطلة مؤقتًا بحيث يمكنك إرفاق مصحح أخطاء ، فقم بتعيين الخاصية المناسبة:

  • بعد 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:

  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 Code ، حدد إضافة تكوين ، ثم حدد LLDB: Custom Launch . هذا يفتح ملف launch.json ويضيف كائن JSON جديدًا إلى القائمة.
  4. احذف تكوين مصحح الأخطاء المضاف حديثًا.
  5. انسخ كائن JSON الذي تمت طباعته بواسطة lldbclient.py والصقه في العنصر الذي حذفته للتو. احفظ التغييرات.
  6. لإعادة تحميل النافذة لتحديث قائمة مصحح الأخطاء ، اضغط على Ctrl + Shift + P واكتب reload window .
  7. حدد تكوين مصحح الأخطاء الجديد واضغط على تشغيل . يجب أن يتصل مصحح الأخطاء بعد 10 إلى 30 ثانية.
  8. عند الانتهاء من تصحيح الأخطاء ، انتقل إلى المحطة الطرفية التي تقوم بتشغيل lldbclient.py واضغط على Enter لإنهاء برنامج lldbclient.py .