توضِّح هذه الصفحة تفاصيل استخدام LLDB لتطوير نظام التشغيل. بالنسبة إلى تطوير التطبيقات، يمكنك الاطّلاع على مقالة تصحيح أخطاء تطبيقك بدلاً من ذلك، والتي توضّح كيفية استخدام واجهة مستخدم "استوديو Android" (استنادًا إلى LLDB).
لم تعُد أداة GDB متاحة أو متوافقة. إذا كنت بصدد التبديل من GDB إلى LLDB، عليك ربما البدء بقراءة الدليل التعليمي حول LLDB. إذا كنت من خبراء استخدام GDB، سيكون جدول تعيين أوامر GDB إلى LLDB مفيدًا جدًا أثناء عملية النقل.
المتطلّبات الأساسية
لاستخدام أداة تصحيح الأخطاء:
- يمكنك إعداد بيئة التصميم باستخدام الأمر
envsetup.sh
المعتاد. - نفِّذ الأمر
lunch
نفسه الذي استخدمته عند الإنشاء. يُرجى العِلم أنّ عنصر الإطلاق يجب أن يتطابق تمامًا مع الجهاز الذي تصحّح أخطاءه. إذا لم يتطابق جهاز الغداء مع الجهاز المرفق، ستظهر لك رسالة خطأ على النحو التالي:You used the wrong lunch: TARGET_PRODUCT (aosp_arm64) does not match attached device (xyzabc)
- وصِّل جهازك بالماكينة.
للحصول على مزيد من المساعدة في إعداد بيئتك، يُرجى الاطّلاع على مقالة إعداد البيئة.
تصحيح أخطاء ملف ثنائي
لتصحيح أخطاء ملف ثنائي أنشأته على جهازك، عليك أولاً نسخ الملف الثنائي إلى الجهاز ثم تشغيل أداة تصحيح الأخطاء. مثلاً:
adb push test.exe /data/local/tmp/test.exe
lldbclient.py --port 5038 -r /data/local/tmp/test.exe
تصحيح أخطاء التطبيقات أو العمليات الجارية
للاتصال بتطبيق قيد التشغيل أو برنامج تابع لنظام التشغيل، استخدِم
lldbclient.py
مع رقم تعريف العملية. على سبيل المثال، لتصحيح أخطاء العملية التي تحمل رقم تعريف العملية
1234، يمكنك تنفيذ ما يلي على المضيف:
lldbclient.py -p 1234
يُعدّ النص البرمجي عملية إعادة توجيه المنفذ، ويشغّل مقتطف تصحيح الأخطاء عن بُعد المناسب على الجهاز، ويشغّل مصحِّح الأخطاء على المضيف، ويضبطه للعثور على الرموز، ويربطه مقتطف تصحيح الأخطاء عن بُعد.
تصحيح أخطاء بدء العملية الأصلية
لتصحيح أخطاء عملية أثناء بدء تشغيلها، استخدِم lldbclient.py
مع الخيار -r
. على سبيل المثال، لتصحيح أخطاء ls /bin
، يمكنك تنفيذ ما يلي على المضيف:
lldbclient.py -r /system/bin/ls /bin
بعد ذلك، أدخِل continue
عند ظهور طلب من مصحِّح الأخطاء.
تصحيح أخطاء بدء تشغيل التطبيق
في بعض الأحيان، تريد تصحيح أخطاء تطبيق عند بدء تشغيله، مثلاً عند حدوث عطل
وتريد مراجعة الرمز البرمجي لمعرفة ما حدث قبل العُطل.
يمكن إرفاق الملفات في بعض الحالات، ولكن في حالات أخرى،
يكون ذلك مستحيلاً لأنّ التطبيق يتعطّل قبل أن تتمكّن من إرفاق الملفات. لا يعمل أسلوب
logwrapper
(المستخدَم في strace
)
دائمًا لأنّ التطبيق قد لا يملك
أذونات لفتح منفذ، ويرث lldbserver
هذا
القيود.
لتصحيح أخطاء بدء تشغيل التطبيق، استخدِم خيارات المطوّرين في "الإعدادات" لتوجيه التطبيق إلى الانتظار إلى أن يتم إرفاق برنامج تصحيح أخطاء Java:
- انتقِل إلى الإعدادات > خيارات المطوّرين > اختيار تطبيق لتصحيح الأخطاء واختَر تطبيقك من القائمة، ثم انقر على الانتظار إلى أن ينتهي تصحيح الأخطاء.
- ابدأ التطبيق، إما من مشغّل التطبيقات أو باستخدام سطر الأوامر لتشغيل:
adb shell am start -a android.intent.action.MAIN -n APP_NAME/.APP_ACTIVITY
- انتظِر تحميل التطبيق إلى أن يظهر لك مربّع حوار يُعلمك بأنّ التطبيق في انتظار برنامج تصحيح أخطاء.
- اربط
lldbserver
/lldbclient
بشكلٍ طبيعي، واضبط نقاط التوقف، ثم واصِل العملية.
للسماح بتشغيل التطبيق، يجب إرفاق أداة تصحيح أخطاء 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
- الإصدار 11 من نظام التشغيل Android والإصدارات الأقدم
adb shell setprop debug.debuggerd.wait_for_gdb true
- Android 6.0 Marshmallow والإصدارات الأقدم
adb shell setprop debug.db.uid 999999
في نهاية مخرجات الأعطال المعتادة، يوفّر debuggerd
تعليمات نسخ ولصق
في logcat توضّح كيفية ربط أداة تصحيح الأخطاء بالعملية التي حدث بها العُطل.
تصحيح الأخطاء باستخدام VS Code
يتيح LLDB تصحيح أخطاء رمز النظام الأساسي على IDE Visual Studio Code. يمكنك استخدام واجهة مستخدم برنامج تصحيح أخطاء VS Code بدلاً من واجهة سطر أوامر LLDB للتحكّم في الرمز البرمجي الأصلي الذي يتم تشغيله على الأجهزة و تصحيح أخطاءه.
قبل استخدام VS Code لتصحيح الأخطاء، ثبِّت إضافة CodeLLDB.
لتصحيح أخطاء الرمز باستخدام VS Code:
- تأكَّد من توفُّر جميع عناصر التصميم (مثل الرموز) المطلوبة لتشغيل
lldbclient.py
أوlldbclient.py
. - في VS Code، اضغط على Ctrl+Shift+P لتشغيل أمر، وابحث عن Debug:
Add Configuration... (تصحيح الأخطاء:
إضافة إعدادات...)، ثم اختَر LLDB.
يؤدي ذلك إلى فتح ملف
launch.json
وإضافة عنصر JSON جديد إلى قائمة. - استبدِل إعدادات مصحِّح الأخطاء التي تمت إضافتها حديثًا بسطرَي تعليقات،
// #lldbclient-generated-begin
و// #lldbclient-generated-end
، ليصبح شكل قائمة الإعدادات على النحو التالي:"configurations": [ // #lldbclient-generated-begin // #lldbclient-generated-end ]
يستخدم تطبيق
lldbclient.py
هذه التعليقات لرصد مكان كتابة الإعدادات. إذا كان هناك عناصر أخرى في القائمة، أضِف أسطر التعليقات إلى النهاية بعد الإعدادات الأخرى. - نفِّذ الأمر التالي في الوحدة الطرفية التي نفّذت فيها
envsetup.sh
وlunch
:lldbclient.py --setup-forwarding vscode-lldb \ --vscode-launch-file LAUNCH_JSON_PATH \ ANY_OTHER_FLAGS -p pid | -n proc-name | -r ...
يكتب
lldbclient.py
الإعدادات التي تم إنشاؤها فيlaunch.json
ويكمل عملية التشغيل. هذا أمر متوقّع، ولا تُغلِق برنامجlldbclient.py
. إذا حذفت--vscode-launch-file
، سيطبع النص البرمجي مقتطف JSON الذي عليك نسخه ولصقه فيlaunch.json
يدويًا.يجب أن تكون العلامة
-r
هي العلامة الأخيرة إذا كانت متوفّرة بسبب طريقة تحليل العلامات بواسطة الأداة. - افتح الشريط الجانبي التشغيل وتصحيح الأخطاء، ومن المفترض أن تظهر الإعدادات الجديدة في قائمة
مصحِّح الأخطاء. اضغط على بدء تصحيح الأخطاء (F5). من المفترض أن يتم ربط أداة تصحيح الأخطاء بعد 10 إلى 30 ثانية.
إذا لم تظهر الإعدادات الجديدة في عرض "التشغيل وتصحيح الأخطاء"، أعِد تحميل النافذة لمحاولة تحديث قائمة مصحِّح الأخطاء: اضغط على Ctrl+Shift+P واكتب
reload window
. - عند الانتهاء من تصحيح الأخطاء، انتقِل إلى المحطة الطرفية التي تعمل على تنفيذ
lldbclient.py
واضغط على Enter لإنهاء برنامجlldbclient.py
. ستؤدي عمليات التشغيل اللاحقة للنص البرمجي إلى إنشاء ملف الإعدادات بين التعليقات#lldbclient-generated
واستبدال المحتوى القديم، ولن تحتاج إلى إزالته يدويًا.
لإضافة خصائص مخصّصة إلى إعدادات الإطلاق التي تم إنشاؤها، يمكنك استخدام العلامة
--vscode-launch-props
. مثلاً:
lldbclient.py --setup-forwarding vscode-lldb \
--vscode-launch-props \
'{"initCommands" : ["script print(\"Hello\")"], "preLaunchTask" : "Build"}' \
...
Build
قبل تصحيح الأخطاء،
ويُلحق خطوة جديدة لبدء تصحيح الأخطاء بالخطوات التي أنشأها النص البرمجي. يمكنك العثور على
نظرة عامة على السمات المتاحة في
مستندات VS Code وفي دليل المستخدم الخاص بملف
إضافة CodeLLDB.