تعرض هذه الصفحة تفاصيل باستخدام LLDB لتطوير أنظمة التشغيل. لتطوير التطبيق، يُرجى مراجعة تصحيح أخطاء التطبيق بدلاً من ذلك، وهي تشرح كيفية استخدام واجهة المستخدم الرسومية لـ Android Studio (استنادًا إلى 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
باستخدام PID على سبيل المثال، لتصحيح أخطاء العملية باستخدام PID
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 (JDWP) برنامج تصحيح الأخطاء مثل برنامج تصحيح أخطاء Java (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
يتيح LLDB تصحيح أخطاء رمز النظام الأساسي على Visual Studio Code: يمكنك استخدام الواجهة الأمامية لبرنامج تصحيح أخطاء رمز VS بدلاً من واجهة LLDB CLI للتحكّم في تصحيح أخطاء الرمز الأصلي الذي يعمل على الأجهزة.
قبل استخدام رمز VS لتصحيح الأخطاء، ثبِّت CodeLLDB.
لتصحيح أخطاء الرمز البرمجي باستخدام رمز VS:
- تأكَّد من أنّ جميع عناصر التصميم (مثل الرموز) مطلوبة للتشغيل.
lldbclient.py
أوlldbclient.py
موجودان. - في VS Code، اضغط على Ctrl+Shift+P لتشغيل أمر، وابحث عن Debug:
إضافة ضبط...، ثم اختيار 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"}' \
...
في الأمثلة على الخصائص، ستجعل رمز VS Code يشغِّل مهمة باسم Build
قبل تصحيح الأخطاء
تُلحق خطوة إعداد جديدة لتصحيح الأخطاء إلى الخطوات التي يُنشئها النص البرمجي. يمكنك العثور على
نظرة عامة على العقارات المتاحة في
مستندات VS Code وفي دليل المستخدم
إضافة CodeLLDB.