يتضمن NDK نصًا برمجيًا لواجهة مستخدم يسمى ndk-gdb
لبدء
جلسة تصحيح الأخطاء الأصلية لسطر الأوامر. ينبغي على المستخدمين الذين يفضلون استخدام واجهة المستخدم الرسومية
اقرأ الوثائق الخاصة بـ تصحيح الأخطاء في
Android Studio بدلاً من ذلك.
المتطلبات
لكي يعمل تصحيح الأخطاء الأصلي لسطر الأوامر، يجب استيفاء المتطلبات التالية:
- يمكنك إنشاء تطبيقك باستخدام نص
ndk-build
البرمجي. نصndk-gdb
البرمجي لا يتيح استخدام طريقةmake APP=<name>
القديمة للإنشاء. - فعِّل تصحيح الأخطاء في التطبيقات في ملف
AndroidManifest.xml
من خلال تضمين عنصر<application>
يضبط السمةandroid:debuggable
علىtrue
- أنشِئ تطبيقك للعمل على Android 2.2 (المستوى 8 من واجهة برمجة تطبيقات Android) أو الإصدارات الأحدث.
- تصحيح الأخطاء على جهاز أو محاكي يعمل بالإصدار 2.2 من نظام التشغيل Android أو إصدار أحدث.
ولأغراض تصحيح الأخطاء، لا يتم استهداف
ولا يشكّل مستوى واجهة برمجة التطبيقات المذكور في ملف
AndroidManifest.xml
أي أهمية. - تطوير التطبيق في هيكل Unix. على نظام التشغيل Windows، استخدِم Cygwin
أو
ndk-gdb-py
Python التجريبي التنفيذ. - استخدموا GNU Make 3.81 أو إصدار أحدث.
الاستخدام
لاستدعاء النص البرمجي ndk-gdb
، عليك التغيير إلى دليل التطبيق أو أي دليل ضمن
بها. مثلاً:
cd $PROJECT $NDK/ndk-gdb
هنا، تشير $PROJECT
إلى الدليل الجذري لمشروعك، و$NDK
نقطة إلى
مسار تثبيت NDK.
عند استدعاء الدالة ndk-gdb
، يتم ضبط الجلسة للبحث عن ملفات المصدر.
وإصدارات الرموز/تصحيح الأخطاء من المكتبات الأصلية التي تم إنشاؤها. عند الإرفاق بنجاح بـ
في التطبيق، يؤدي ndk-gdb
إلى ظهور سلسلة طويلة من رسائل الخطأ، مع الإشارة إلى أنه لا يمكنها
العثور على مكتبات النظام المتنوعة. وهذا أمر طبيعي، لأن الجهاز المضيف لا يحتوي على
إصدارات الرموز أو تصحيح الأخطاء لهذه المكتبات على جهازك المستهدف. يمكنك تجاهل هذه
الرسائل.
بعد ذلك، يعرض ndk-gdb
طلب GDB عادي.
تتفاعل مع ndk-gdb
بالطريقة نفسها التي تتفاعل بها مع GNU GDB. على سبيل المثال، يمكنك
استخدام b <location>
لضبط نقاط الإيقاف، وc
(للمتابعة) إلى
واستئناف التنفيذ. للحصول على قائمة شاملة بالأوامر، راجِع
دليل GDB إذا كنت تفضل استخدام
برنامج تصحيح الأخطاء LLDB، فاستخدم --lldb
عند استدعاء النص البرمجي ndk-gdb
.
تجدر الإشارة إلى أنّه عند إنهاء طلب GDB، تتوقف عملية التطبيق التي تعمل على تصحيحها. هذا النمط السلوك أحد قيود gdb.
يتعامل ndk-gdb
مع العديد من حالات الأخطاء، ويعرض رسالة خطأ تتضمن معلومات إذا كانت
إلى العثور على مشكلة. تشمل عمليات التحقّق هذه التأكّد من استيفاء الشروط التالية:
- للتأكد من أن ADB في مسارك.
- يتحقق مما إذا كان قد تم الإعلان عن أنه قابل للتصحيح في تطبيقك في ملف البيان الخاص به.
- يتحقق من وجود التطبيق المثبّت الذي يحمل اسم الحزمة نفسه على الجهاز قابل لتصحيح الأخطاء.
بشكل تلقائي، يبحث ndk-gdb
عن عملية تطبيق قيد التشغيل حاليًا، ويعرض
خطأ في حالة عدم العثور على واحد. ومع ذلك، يمكنك استخدام --start
أو
خيار "--launch=<name>
" لبدء النشاط تلقائيًا قبل تصحيح الأخطاء
جلسة المراجعة. لمزيد من المعلومات، يُرجى الاطّلاع على الخيارات.
الخيارات
للاطّلاع على قائمة كاملة من الخيارات، اكتب ndk-gdb --help
في سطر الأوامر. الجدول 1
يعرض عددًا من أكثرها استخدامًا، مع وصف مختصر.
بدءًا من ndk-gdb
مع تحديد هذا الخيار، يتم تشغيل أول نشاط قابل للتشغيل مُدرَج.
في بيان التطبيق. استخدام "--launch=<name>
" لإطلاق التطبيق التالي القابل للتشغيل
الأخرى. لتفريغ قائمة الأنشطة القابلة للتشغيل، شغِّل --launch-list
من الأمر.
الخط.
Option | الوصف> |
---|---|
--lldb |
في حال الضبط، سيستخدم النص البرمجي برنامج تصحيح الأخطاء LLDB للجلسة بدلاً من gdb. |
--verbose |
يطلب هذا الخيار من نظام الإصدار طباعة معلومات مطوَّلة حول عملية تصحيح الأخطاء الأصلية.
إعداد الجلسة. يكون مطلوبًا فقط لتصحيح المشاكل عندما يتعذَّر على برنامج تصحيح الأخطاء الاتصال
ورسائل الخطأ التي يعرضها |
--force |
يتم تلقائيًا إيقاف ndk-gdb كإجراء تلقائي إذا تبيّن أنّ هناك جلسة أخرى لتصحيح الأخطاء الأصلية.
يتم تشغيله على الجهاز نفسه. يؤدي هذا الخيار إلى إنهاء الجلسة الأخرى واستبداله بجلسة جديدة.
يُرجى العِلم أنّ هذا الخيار لا يؤدي إلى إنهاء التطبيق الفعلي الذي يجري تصحيح الأخطاء فيه، وبالتالي عليك إنهاءه.
على حدة. |
--start |
عند بدء تشغيل |
--launch=<name> |
يتشابه هذا الخيار مع |
--launch-list |
يطبع هذا الخيار المناسب قائمة بجميع أسماء الأنشطة القابلة للتشغيل في
التطبيق. يستخدم " |
--project=<path> |
يحدِّد هذا الخيار دليل مشروع التطبيق. إنها مفيدة إذا كنت تريد بدء تشغيل البرنامج النصي دون الحاجة إلى التغيير إلى دليل المشروع أولاً. |
--port=<port> |
يستخدم |
--adb=<file> |
يحدّد هذا الخيار دالة adb قابل للتنفيذ. من الضروري فقط في حال عدم ضبط مسارك لتضمين هذا الإجراء القابل للتنفيذ. |
-d -e -s <serial> |
تشبه هذه العلامات أوامر adb التي تحمل الأسماء نفسها. يجب ضبط هذه العلامات إذا كان لديك أجهزة أو أدوات المحاكاة المتصلة بالجهاز المضيف. وفي ما يلي معانيها:
بدلاً من ذلك، يمكنك تحديد متغيّر بيئة |
--exec=<file> -x <file> |
يطلب هذا الخيار من |
--nowait |
يمكنك إيقاف إيقاف رمز Java مؤقتًا إلى أن يتم الاتصال بشبكة GDB. قد يؤدي اجتياز هذا الخيار إلى حدوث برنامج تصحيح الأخطاء. تفويت نقاط التوقف المبكرة. |
--tui
-t |
تفعيل واجهة المستخدم النصية في حال توفّرها |
--gnumake-flag=<flag> |
يمثّل هذا الخيار علامة (أو علامات) إضافية لتمريرها إلى
نظام |
ملاحظة: الخيارات الثلاثة الأخيرة في هذا الجدول مخصصة فقط
إصدار Python من ndk-gdb
.
إتاحة Thread
إذا كان تطبيقك يعمل على نظام أساسي أقدم من Android 2.3 (المستوى 9 لواجهة برمجة التطبيقات)، ndk-gdb
لا يمكن تصحيح أخطاء سلاسل التعليمات الأصلية بشكل صحيح. لا يستطيع برنامج تصحيح الأخطاء إلا تصحيح سلسلة التعليمات الرئيسية بشكل كامل.
تتجاهل تنفيذ سلاسل محادثات أخرى.
إذا وضعت نقطة توقف على دالة منفّذة على سلسلة محادثات غير رئيسية، يتم الخروج من البرنامج تعرض GDB الرسالة التالية:
Program terminated with signal SIGTRAP, Trace/breakpoint trap. The program no longer exists.