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

هذه الصفحة تفاصيل باستخدام LLDB أو GDB للتنمية OS. لتطوير التطبيق، انظر تصحيح التطبيق الخاص بك بدلا من ذلك، وهو ما يفسر كيفية استخدام الروبوت ستوديو واجهة المستخدم الرسومية (على أساس LLDB).

تم إهمال GDB وستتم إزالته قريبًا. إذا كنت التحول من GDB إلى LLDB، ربما يجب عليك البدء من خلال قراءة LLDB التعليمي . إذا كنت مستخدم خبير GDB، و GDB إلى LLDB خريطة القيادة هي مفيدة جدا أثناء مرحلة التحول.

المتطلبات الأساسية

لاستخدام مصحح الأخطاء:

  • إعداد بيئة التصنيع مع المعتادة envsetup.sh الأوامر.
  • تشغيل نفس lunch الأمر الذي المستخدمة عند بناء.

لمزيد من المساعدة في إنشاء بيئة، راجع إعداد بيئة .

تصحيح أخطاء التطبيقات أو العمليات قيد التشغيل

للاتصال تطبيق قيد التشغيل أو الخفي الأصلي، واستخدام 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
    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 ستوديو . يمكنك استخدام الواجهة الأمامية لمصحح الأخطاء VS Code بدلاً من واجهة LLDB CLI للتحكم في التعليمات البرمجية الأصلية التي تعمل على الأجهزة وتصحيحها.

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