يوفّر "استوديو Android" برنامج تصحيح أخطاء يتيح لك إجراء ما يلي وغير ذلك:
- اختَر جهازًا لتصحيح أخطاء تطبيقك عليه.
- عيِّن نقاط التوقف في رموز Java وKotlin وC/C++.
- فحص المتغيّرات وتقييم التعبيرات في وقت التشغيل
تتضمّن هذه الصفحة تعليمات حول العمليات الأساسية لبرنامج تصحيح الأخطاء. لمزيد من المستندات، يمكنك أيضًا الاطّلاع على مستندات تصحيح الأخطاء في IntelliJ IDEA.
تفعيل تصحيح الأخطاء
قبل البدء في تصحيح الأخطاء، اتّبِع الخطوات التالية:
- فعِّل تصحيح الأخطاء على جهازك.
- في حال استخدام المحاكي، سيتم تفعيل تصحيح الأخطاء تلقائيًا. ولكن بالنسبة لجهاز متصل، يمكنك الحاجة إلى تفعيل تصحيح الأخطاء في مطوِّر الجهاز. الخيارات.
- شغِّل نسخة إصدار قابلة للتصحيح.
استخدِم صيغة إصدار يشمل
debuggable true
(isDebuggable = true
في النصوص البرمجية بلغة Kotlin) في إعدادات التصميم.يمكنك عادةً اختيار الإعداد التلقائي "تصحيح الأخطاء" كل صيغة مضمّنة في كل "استوديو Android" المشروع، على الرغم من أنّه غير مرئي في ملف
build.gradle
. ومع ذلك، إذا تحديد أنواع الإصدارات الجديدة التي يجب تصحيح الأخطاء فيها، يجب إضافة السمةdebuggable true
مع نوع الإصدار:- اضبط نقاط الإيقاف في رمز تطبيقك.
- في شريط الأدوات، اختَر جهازًا لتصحيح أخطاء تطبيقك عليه من قائمة الجهاز الهدف.
إذا لم يسبق لك ضبط أي أجهزة، عليك تنفيذ أحد الإجراءَين التاليَين: توصيل جهاز عبر USB، ربط جهاز عبر شبكة Wi-Fi يجب إنشاء متوسّط مدة المشاهدة لاستخدام محاكي Android
- في شريط الأدوات، انقر على تصحيح الأخطاء .
إذا كان التطبيق قيد التشغيل على الجهاز، سيظهر مربّع حوار يسألك ما إذا كنت تريد التبديل من تشغيل إلى تصحيح الأخطاء. يجب إعادة تشغيل الجهاز لبدء تصحيح الأخطاء. إلى الإبقاء على تشغيل المثيل نفسه للتطبيق، انقر على إلغاء تصحيح الأخطاء وبدلاً من ذلك إرفاق برنامج تصحيح الأخطاء بتطبيق قيد التشغيل. وبخلاف ذلك، يمكنك استخدام "استوديو Android" ينشئ حزمة APK ويوقّعها باستخدام مفتاح تصحيح الأخطاء ويثبّتها على الجهاز الذي اخترته ويشغلها.
إذا كنت إضافة رمزَي C وC++ إلى مشروعك يشغّل "استوديو Android" أيضًا برنامج تصحيح الأخطاء LLDB في صفحة "تصحيح الأخطاء". لتصحيح أخطاء الرمز البرمجي الأصلي.
- إذا لم تكن نافذة تصحيح الأخطاء مفتوحة، حدِّد عرض > نوافذ الأدوات > تصحيح الأخطاء، أو انقر على رمز تصحيح الأخطاء في شريط نافذة الأدوات.
- انقر على إرفاق برنامج تصحيح الأخطاء بعملية Android .
- في مربع الحوار اختيار العملية، حدد العملية التي تريد
نرفق برنامج تصحيح الأخطاء بها.
- إذا كنت تستخدم محاكيًا أو جهازًا جذرًا، يمكنك التحقق عرض كل العمليات للاطّلاع على جميع العمليات. على الجهاز الجذر، ستظهر كل هذه العمليات التي تعمل على الجهاز. ومع ذلك، لن يظهر هذا إلا على الجهاز الذي لم يتوفر له جذر والعمليات التي يمكن تصحيح الأخطاء بها.
- من القائمة استخدام إعدادات برنامج تصحيح الأخطاء في Android من، يمكنك اختيار ملف ضبط التشغيل/تصحيح الأخطاء. بالنسبة إلى رمز C وC++، يتيح لك ذلك إعادة استخدام أوامر بدء LLDB وأوامر ما بعد الربط بـ LLDB وأدلة الترميز في عملية ضبط حالية.
- إذا لم يكن لديك إعدادات حالية لتشغيل/تصحيح أخطاء التطبيق، اختَر إنشاء جديد. يؤدّي هذا الاختيار إلى تفعيل نوع تصحيح الأخطاء حيث يمكنك اختيار نوع تصحيح أخطاء مختلف. بشكلٍ تلقائي، يستخدم Android Studio نوع تصحيح الأخطاء "الاكتشاف التلقائي" لاختيار أفضل خيار لأداة تصحيح الأخطاء استنادًا إلى ما إذا كان مشروعك يتضمّن رمز Java أو C/C++.
- انقر على موافق.
تظهر نافذة تصحيح الأخطاء.
- شريط أدوات التنفيذ والتنقّل راجِع التعامل مع نقاط الإيقاف.
- أداة اختيار سلسلة المحادثات
- إدخال تعبير المشاهدة والتقييم راجِع فحص المتغيّرات.
- تجميع العرض
- لوحة "المتغيّرات". راجِع فحص المتغيّرات.
- الرصد تلقائيًا
- يمكنك اختيار نوع تصحيح الأخطاء هذا إذا أردت أن يختار "استوديو Android" الخيار الأفضل تلقائيًا. للتعليمة البرمجية التي تصححها. على سبيل المثال، إذا كان لديك أي رمز C أو C++ في مشروعك، يستخدم "استوديو Android" تلقائيًا أداة تصحيح الأخطاء المزدوجة الكتابة. وبخلاف ذلك، يستخدم "استوديو Android" نوع تصحيح الأخطاء "JavaScript فقط".
- Java فقط
- اختَر نوع تصحيح الأخطاء هذا إذا كنت تريد تصحيح أخطاء الرمز البرمجي المكتوب بلغة Java أو Kotlin فقط. لغة Java فقط يتجاهل برنامج تصحيح الأخطاء أي نقاط توقف أو يراقبك في الرمز البرمجي الأصلي.
- محلي فقط (متاح فقط مع رمز C/C++)
-
اختَر نوع تصحيح الأخطاء هذا إذا كنت تريد استخدام ملف LLDB فقط لتصحيح أخطاء الرمز. عند استخدام هذه الميزة
نوع تصحيح الأخطاء، فإن عرض جلسة برنامج تصحيح أخطاء Java غير متاح. بشكلٍ تلقائي، يفحص IDE
LLDB الرمز البرمجي الأصلي فقط ويتجاهل نقاط التوقف في رمز Java
. إذا كنت تريد أيضًا تصحيح أخطاء رمز Java، عليك التبديل إلى أحد الخيارَين التاليَين:
نوع تصحيح الأخطاء الكشف التلقائي أو الثنائي.
لا يعمل خيار "تصحيح الأخطاء الأصلي" إلا على الأجهزة التي تستوفي المتطلبات التالية:
يتوافق الجهاز مع
run-as
.للتحقّق مما إذا كان الجهاز متوافقًا مع "
run-as
"، شغِّل الأمر التالي على واجهة ADB المتصلة بجهازك:run-as your-package-name pwd
استبدِل
your-package-name
باسم حزمة تطبيقك. إذا كانت الجهاز متوافقًا معrun-as
، فمن المفترض أن يتم عرض الأمر بدون أي أخطاء.لقد تم تفعيل "
ptrace
" على الجهاز.للتأكّد من تفعيل
ptrace
، شغِّل الأمر التالي على ADB واجهة الأوامر المتصلة بجهازك:sysctl kernel.yama.ptrace_scope
في حال تفعيل
ptrace
، سيطبع الأمر القيمة0
أو خطأunknown key
. إذا لم تكن السمةptrace
مفعّلة، سيتم طباعة قيمة أخرى غير0
.
- ثنائي (Java + رمز أصلي) - متاح فقط مع رمز C/C++
-
اختر نوع تصحيح الأخطاء هذا إذا كنت تريد التبديل بين تصحيح أخطاء كل من Java والرمز البرمجي الأصلي.
يُرفق Android Studio كلاً من برنامج تصحيح أخطاء Java وLLDB على تطبيقك.
حتى تتمكن من فحص
نقاط التوقف في كل من Java والرمز البرمجي الأصلي بدون إعادة تشغيل التطبيق
أو تغيير إعدادات تصحيح الأخطاء
في الشكل 2، لاحظ علامتَي التبويب على يسار عنوان نافذة تصحيح الأخطاء. ونظرًا لأن التطبيق يحتوي على رمزي Java وC++ ، يمكن استخدام علامة تبويب واحدة لتصحيح الأخطاء والأخرى لتصحيح أخطاء رمز Java، كما هو موضّح في -java.
- نقطة إيقاف السطر
- النوع الأكثر شيوعًا هو نقطة فاصلة خطية توقف تنفيذ التطبيق مؤقتًا في وقت محدد سطر التعليمة البرمجية. أثناء الإيقاف المؤقت، يمكنك فحص المتغيرات وتقييم التعبيرات ثم المتابعة. سطرًا تلو الآخر لتحديد أسباب الأخطاء في بيئة التشغيل.
- النقطة الفاصلة للطريقة
- يوقف نقطة التوقف في الطريقة تنفيذ تطبيقك مؤقتًا عند دخوله إلى طريقة معيّنة أو الخروج منها. أثناء الإيقاف المؤقت، يمكنك فحص المتغيّرات وتقييم التعبيرات ثم مواصلة تنفيذ السطر تلو الآخر لتحديد أسباب أخطاء وقت التشغيل. عندما تقوم بتعيين نقطة توقف على قابلة للإنشاء، يسرد برنامج تصحيح الأخطاء معلمات العنصر القابل للإنشاء وحالته للمساعدة في وتحديد التغييرات التي قد تسببت في إعادة الإنشاء.
- نقطة الإيقاف في الحقل
- توقِف نقطة التوقف في الحقل تنفيذ تطبيقك مؤقتًا عند القراءة من حقل معيّن أو الكتابة فيه.
- نقطة إيقاف الاستثناء
- يؤدي نقطة التوقف الخاصة بالاستثناء إلى إيقاف تنفيذ تطبيقك مؤقتًا عند حدوث استثناء.
- حدِّد سطر الرمز الذي تريد إيقاف التنفيذ مؤقتًا فيه.
- انقر على هامش التوثيق الأيسر على طول سطر الرمز هذا أو ضع علامة الإقحام على الخط واضغط على Control+F8 (على أجهزة macOS وCommand+F8).
- إذا كان تطبيقك قيد التشغيل، انقر على إرفاق أداة تصحيح الأخطاء بعملية Android . بخلاف ذلك، انقر على تصحيح الأخطاء لبدء تصحيح الأخطاء.
-
لفحص شجرة الكائن لمتغير، عليك توسيعه في طريقة عرض "المتغيّرات". في حال حذف إذا لم تكن طريقة عرض "المتغيّرات" مرئية، انقر على إعدادات التنسيق. وتأكد من يتم وضع علامة في المربّع بجانب المتغيّرات.
-
للانتقال إلى السطر التالي في الرمز بدون إدخال طريقة، انقر على خطوة أكثر من
-
للانتقال إلى السطر الأول داخل طلب طريقة، انقر على خطوة إلى .
-
للانتقال إلى السطر التالي خارج الطريقة الحالية، انقر على خطوة خارج المباراة .
-
لمواصلة تشغيل التطبيق بشكل طبيعي، انقر على استئناف البرنامج
- ينتقل "استوديو Android" إلى الوضع
<your-module> عندما يواجه برنامج تصحيح الأخطاء LLDB
نقطة توقف في رمز C/C++ الخاص بك. تعد الإطارات والمتغيرات
تتوفر أجزاء الساعات أيضًا وتعمل تمامًا كما لو كانت
يتم تصحيح أخطاء رمز Java.
على الرغم من أنّ لوحة "المحادثات" غير متاحة في عرض جلسة LLDB، يمكنك الوصول إلى عمليات تطبيقك باستخدام قائمة في لوحة "اللقطات". مزيد من المعلومات الأجزاء المتعلّقة بكيفية تصحيح أخطاء النافذة الإطارات وفحص المتغيّرات.
ملاحظة: أثناء فحص نقطة توقف في الرمز البرمجي الأصلي، يعلّق نظام Android الجهاز الافتراضي الذي يشغِّل لغة Java في تطبيقك رمز البايت. وهذا يعني أنه لا يمكنك التفاعل مع لغة Java أو استرداد أي معلومات حالة من برنامج تصحيح أخطاء Java جلسة، أثناء فحص نقطة توقف في التعليمات البرمجية الأصلية.
- ينتقل "استوديو Android" إلى الوضع علامة تبويب <your-module>-java عند استخدام برنامج تصحيح أخطاء Java نقطة توقف في كود Java أو Kotlin.
- أثناء تصحيح الأخطاء باستخدام LLDB، يمكنك استخدام محطة LLDB في عرض جلسة LLDB لتمرير خيارات سطر الأوامر إلى LLDB. إذا كانت لديك أسئلة الأوامر التي تريد من LLDB تنفيذها في كل مرة تبدأ فيها تصحيح الأخطاء تطبيقك، إما قبل أو بعد إرفاق برنامج تصحيح الأخطاء بـ عملية التطبيق، يمكنك وإضافة هذه الأوامر إلى إعدادات تصحيح الأخطاء.
- أدخِل التعبير الذي تريد مشاهدته أو عرضه.
- انقر على إضافة إلى الساعات أو اضغط على Enter لتقييم التعبير مرة واحدة.
- يستخدم جهازك المادي أو المحاكي المستهدَف وحدة معالجة مركزية (CPU) x86 أو x86_64. في حال حذف
جهازك يستخدم وحدة معالجة مركزية (CPU) ARM، فيجب عليك محاذاة حدود
عنوان المتغير في الذاكرة إما إلى 4 بايت، للمعالجات 32 بت، أو 8
بايت، للمعالجات 64 بت. لمحاذاة متغيّر في الرمز البرمجي الأصلي، حدِّد
__attribute__((aligned(num_bytes)))
في تباطؤ المتغيّر، كما هو موضّح أدناه:// For a 64-bit ARM processor int my_counter __attribute__((aligned(8)));
- سبق أن حدّدت ثلاث نقاط مشاهدة أو أقل. "استوديو Android" فقط يدعم ما يصل إلى أربع نقاط مراقبة على الأجهزة المستهدفة بمعيار x86 أو x86_64. غير ذلك قد تتوافق الأجهزة مع عدد أقل من نقاط المراقبة.
- أثناء تعليق تطبيقك عند نقطة إيقاف، انتقِل إلى لوحة "المتغيّرات" في عرض جلسة LLDB.
-
انقر بزر الماوس الأيمن على متغيّر يشغل كتلة الذاكرة التي تريد اختَر إضافة نقطة مراقبة
سيظهر مربع حوار لضبط نقطة المراقبة، كما هو موضّح في الشكل 9.
اضبط نقطة المراقبة باستخدام الخيارات التالية:
- مفعّل: يجب إلغاء تحديد هذا الخيار إذا كنت تريد إعلامات "استوديو Android" لتجاهل نقطة المراقبة إلى أن تغيّر الإعداد. جهاز Android تحفظ "استوديو YouTube" نقطة المشاهدة الخاصة بك لتتمكّن من الوصول إليها لاحقًا.
- تعليق: يعلّق نظام Android تطبيقك تلقائيًا. عند وصوله إلى جزء من الذاكرة تعيّنه إلى نقطة مراقبة. أزِل العلامة من مربّع هذا الخيار إذا كنت لا تريد هذا السلوك. يكشف هذا الإجراء عن خيارات إضافية يمكنك استخدامها لتخصيص السلوك عندما يتفاعل النظام مع نقطة المراقبة: تسجيل الرسالة في وحدة التحكّم والإزالة عند الوصول إليها.
- نوع الوصول: اختَر ما إذا كان يجب أن يشغّل تطبيقك نقطة مراقبة عندما تحاول القراءة أو الكتابة في مجموعة الذاكرة التي يخصصها النظام للمتغير. لتفعيل نقطة المشاهدة في قراءة أو كتابة، انقر على أي.
- انقر على تم.
- في قائمة "المتغيّرات"، انقر بزر الماوس الأيمن في أيّ مكان على سطر مورد لعرض القائمة.
- في القائمة، اختَر عرض باسم واختَر التنسيق الذي تريد استخدامه.
تعتمد التنسيقات المتاحة على نوع بيانات المورد الذي اخترته. قد يظهر لك واحد أو أكثر من الخيارات التالية:
- الفئة: لعرض تعريف الفئة
- toString: تنسيق السلسلة المعروضة.
- الكائن: لعرض تعريف الكائن (مثيل الفئة).
- مصفوفة: يتم عرضها بتنسيق مصفوفة.
- الطابع الزمني: اعرض التاريخ والوقت على النحو التالي: yyyy-mm-dd hh:mm:ss.
- Auto: يختار "استوديو Android" أفضل تنسيق استنادًا إلى نوع البيانات.
- ثنائي: لعرض قيمة ثنائية باستخدام الأصفار والآحاد
- measureSpec: القيمة التي يتم تمريرها من العنصر الرئيسي إلى العنصر الفرعي المحدّد.
يُرجى الاطّلاع على
MeasureSpec
. - ست عشري: يتم العرض كقيمة سداسية عشرية.
- عنصر أساسي: يتم عرضه كقيمة رقمية باستخدام نوع بيانات أساسي.
- عدد صحيح: عرض كقيمة رقمية للنوع
Integer
- انقر بزر الماوس الأيمن على قيمة المورد.
- اختَر عرض باسم.
- حدِّد إنشاء.
- سيظهر مربّع الحوار برامج عرض نوع بيانات Java. اتّبِع التعليمات الواردة في برامج عرض أنواع بيانات Java:
رائع
android { buildTypes { customDebugType { debuggable true ... } } }
Kotlin
android { buildTypes { create("customDebugType") { isDebuggable = true ... } } }
تنطبق هذه السمة أيضًا على الوحدات التي تحتوي على رمز C/C++.
ملاحظة:
لم تعُد السمة jniDebuggable
مُستخدَمة.
إذا كان تطبيقك يعتمد على وحدة مكتبة تريد أيضًا تصحيح أخطائها، يجب أن تتضمّن هذه المكتبة أيضًا
مع debuggable true
حتى تحتفظ برموز تصحيح الأخطاء الخاصة بها.
لضمان تلقّي الصِيَغ القابلة للتصحيح في مشروع تطبيقك المتغير القابل للتصحيح
وحدة مكتبة، انشر نسخًا غير افتراضية من مكتبتك.
بدء تصحيح الأخطاء
يمكنك بدء جلسة تصحيح أخطاء على النحو التالي:
أرفِق برنامج تصحيح الأخطاء بتطبيق قيد التشغيل.
إذا كان تطبيقك قيد التشغيل على جهازك، يمكنك بدء تصحيح الأخطاء بدون إعادة تشغيل التطبيق على النحو التالي:
علامة التبويب العمليات في Device Explorer (العرض > نافذة الأداة > مستكشف الجهاز) أيضًا قائمة بالعمليات التي يمكن تصحيح الأخطاء بها. اختَر عملية من هذا المنطلق ونفِّذ عملية قتل , فرض الإيقاف , أو إرفاق برنامج تصحيح الأخطاء بعملية معيّنة
نافذة تصحيح الأخطاء
تنقسم نافذة تصحيح الأخطاء إلى
ملاحظة: يحتاج كل من برنامج تصحيح الأخطاء في "استوديو Android" وأداة تجميع البيانات المهملة إلى
غير متكامل. يضمن جهاز Android الافتراضي أن يكون أي كائن
الذي يدرك برنامج تصحيح الأخطاء أنّه لا يتم جمع البيانات المهملة إلا بعد أن ينتهي برنامج تصحيح الأخطاء
وقطع اتصاله. وقد ينتج عن هذا تراكم الكائنات أثناء
تم ربط برنامج تصحيح الأخطاء. على سبيل المثال، إذا رأى برنامج تصحيح الأخطاء سلسلة محادثات قيد التشغيل،
Thread
المرتبط
لن يتم جمع العنصر المهمل إلى أن يتم إلغاء ربط برنامج تصحيح الأخطاء، حتى إذا تم إنهاء سلسلة التعليمات.
تغيير نوع برنامج تصحيح الأخطاء
بما أنّه يجب استخدام أدوات مختلفة لتصحيح أخطاء الرموز البرمجية Java/Kotlin والرموز البرمجية C/C++، يتيح لك أداة تصحيح الأخطاء في Android Studio اختيار نوع أداة تصحيح الأخطاء التي تريد استخدامها. "استوديو Android" بشكل تلقائي يحدد برنامج تصحيح الأخطاء المطلوب استخدامه بناءً على اللغات التي يتم اكتشافها في مشروعك باستخدام الرصد التلقائي لنوع برنامج تصحيح الأخطاء
لاختيار برنامج تصحيح الأخطاء يدويًا في ضبط تصحيح الأخطاء، انقر على تشغيل >. تعديل الإعدادات: يمكنك أيضًا تحديد برنامج تصحيح الأخطاء في مربّع الحوار الذي يظهر عند انقر على تشغيل > يُرجى إرفاق برنامج تصحيح الأخطاء بعملية Android.
تشمل أنواع تصحيح الأخطاء المتوفّرة ما يلي:
ملاحظة: أثناء تصحيح أخطاء الرمز البرمجي الأصلي الذي تم تحسينه من خلال
برنامج تجميع البيانات، فقد تظهر لك رسالة التحذير التالية:This function was
compiled with optimizations enabled. Some debugger features may not be
available
. عند استخدام علامات التحسين، يقوم برنامج التحويل البرمجي بإجراء تغييرات على
التعليمات البرمجية المجمعة لجعلها تعمل بشكل أكثر كفاءة. وقد يؤدي ذلك إلى تنفيذ برنامج تصحيح الأخطاء
والإبلاغ عن معلومات غير متوقعة أو غير صحيحة لصعوبة
برنامج تصحيح الأخطاء لإعادة ربط الرمز البرمجي المجمّع المحسّن برمز المصدر الأصلي.
لهذا السبب، يجب إيقاف تحسينات المُجمِّع أثناء تصحيح أخطاء
الرمز الأصلي.
استخدام سجلّ النظام
يعرض سجلّ النظام رسائل النظام أثناء تصحيح أخطاء تطبيقك. وتتضمّن هذه الرسائل. معلومات من التطبيقات التي تعمل على الجهاز. إذا كنت تريد استخدام صفحة سجلّ النظام لتصحيح أخطاء التطبيق، والتأكّد من أنّ الرمز البرمجي يكتب رسائل السجلّ ويطبع الحزمة ويمكنك تتبُّع الاستثناءات عندما يكون التطبيق في مرحلة التطوير.
كتابة رسائل السجل في الرمز الخاص بك
لكتابة رسائل السجلّ في الرمز البرمجي، استخدِم فئة
Log
. تساعدك رسائل السجلّ في فهم تسلسل التنفيذ من خلال جمع بيانات تصحيح أخطاء النظام أثناء تفاعلك مع التطبيق. ويمكن أن تُعلمك رسائل السجلّ أيضًا بالجزء الذي تعذّر تنفيذه في التطبيق. لمزيد من المعلومات عن التسجيل، يُرجى مراجعة
كتابة السجلّات وعرضها باستخدام أداة Logcat
يوضِّح المثال التالي كيفية إضافة رسائل السجلّ لتحديد ما إذا كانت معلومات الحالة السابقة متوفّرة عند بدء نشاطك:
Kotlin
import android.util.Log ... class MyActivity : Activity() { ... override fun onCreate(savedInstanceState: Bundle?) { ... if (savedInstanceState != null) { Log.d(TAG, "onCreate() Restoring previous state") /* restore state */ } else { Log.d(TAG, "onCreate() No saved state available") /* initialize app */ } ... } ... companion object { private val TAG: String = MyActivity::class.java.simpleName ... } }
Java
import android.util.Log; ... public class MyActivity extends Activity { private static final String TAG = MyActivity.class.getSimpleName(); ... @Override public void onCreate(Bundle savedInstanceState) { ... if (savedInstanceState != null) { Log.d(TAG, "onCreate() Restoring previous state"); /* restore state */ } else { Log.d(TAG, "onCreate() No saved state available"); /* initialize app */ } ... } }
أثناء التطوير، يمكن للرمز البرمجي أيضًا رصد الاستثناءات وكتابة تتبُّع تسلسل استدعاء الدوال البرمجية في النظام. السجل:
Kotlin
fun someOtherMethod() { try { ... } catch (e : SomeException) { Log.d(TAG, "someOtherMethod()", e) } }
Java
void someOtherMethod() { try { ... } catch (SomeException e) { Log.d(TAG, "someOtherMethod()", e); } }
ملاحظة: يُرجى إزالة رسائل سجلّ تصحيح الأخطاء وطلبات طباعة تتبُّع تسلسل استدعاء الدوال البرمجية من
الرمز عندما تكون مستعدًا لنشر التطبيق. لإجراء ذلك، يجب ضبط DEBUG
.
وضع علامة على رسائل سجل تصحيح الأخطاء ووضعها داخل العبارات الشرطية.
عرض سجلّ النظام
يمكنك عرض وفلترة رسائل تصحيح الأخطاء ورسائل النظام الأخرى في نافذة Logcat، كما هو موضّح أدناه.
في الشكل 4. على سبيل المثال، يمكنك الاطلاع على الرسائل عند حدوث عملية جمع البيانات غير المرغوب فيها أو الرسائل التي
التي تضيفها إلى تطبيقك
صف واحد (Log
).
لاستخدام Logcat، ابدأ بتصحيح الأخطاء واختَر علامة التبويب Logcat.
للحصول على وصف لتطبيق Logcat وخيارات الفلترة المتاحة فيه، يُرجى الاطّلاع على كتابة السجلّات وعرضها باستخدام Logcat.
العمل مع نقاط التوقف
يتوافق "استوديو Android" مع نقاط الإيقاف التي تشغيل إجراءات مختلفة لتصحيح الأخطاء. هناك عدة أنواع من نقاط الإيقاف:
يمكنك ضبط نقاط توقف مشروطة تؤدي إلى تعليق التنفيذ فقط في حال استيفاء شروط معيّنة. المشروع. يمكنك أيضًا ضبط نقاط توقّف في التسجيل تُسجِّل في Logcat بدون تعليق execution. يمكن أن يساعد هذا في تجنب إشباع التعليمات البرمجية الخاصة بك بعبارات السجل.
لإضافة نقطة فاصلة خطية، اتّبِع الخطوات التالية:
تظهر نقطة حمراء بجانب الخط عند تعيين نقطة توقف، كما هو موضح في الشكل 5.
عندما يصل تنفيذ الرمز إلى نقطة الإيقاف، يوقف "استوديو Android" عملية تنفيذ تطبيقك مؤقتًا.
لتحديد حالة التطبيق، استخدِم الأدوات في علامة التبويب "برنامج تصحيح الأخطاء":
إذا كان مشروعك يستخدم أي رمز برمجي أصلي، يتم ضبط نوع تصحيح الأخطاء "الرصد تلقائيًا" تلقائيًا. ترفق كل من برنامج تصحيح أخطاء Java وLLDB بتطبيقك باعتبارهما اثنين والعمليات. يمكنك التبديل بين فحص نقاط توقف Java وC/C++ بدون إعادة تشغيل التطبيق أو تغيير الإعدادات.
ملاحظة: لكي يتمكّن "استوديو Android" من رصد نقاط الإيقاف في رمز C أو C++ ، يُرجى اتّباع الخطوات التالية: يجب استخدام نوع تصحيح أخطاء يتوافق مع LLDB، مثل Detect تلقائيًا أو أصلي أو ثنائي. يمكنك تغيير نوع تصحيح الأخطاء الذي يستخدمه "استوديو Android" من خلال تعديل إعدادات تصحيح الأخطاء. إلى للمزيد من المعلومات حول أنواع تصحيح الأخطاء المختلفة، اطّلِع على القسم الذي يتناول استخدام أنواع تصحيح الأخطاء الأخرى.
عندما ينشر Android Studio تطبيقك على جهازك المستهدَف، يتم فتح نافذة تصحيح الأخطاء مع علامة تبويب أو عرض جلسة تصحيح أخطاء لكل عملية من عمليات مصحِّح الأخطاء، كما هو موضَّح في الشكل 6.
أثناء تصحيح أخطاء الرمز البرمجي C/C++، يمكنك أيضًا ضبط أنواع خاصة من نقاط التوقف، والتي تُعرف باسم نقاط المراقبة، ويمكنها تعليق عملية تطبيقك عندما يتفاعل تطبيقك مع كتلة ذاكرة معيّنة. لمزيد من المعلومات، يُرجى قراءة القسم المتعلّق بكيفية إضافة نقاط المراقبة.
عرض نقاط التوقف وضبطها
لعرض جميع نقاط الإيقاف وضبط إعدادات نقاط الإيقاف، انقر على عرض نقاط الإيقاف في نافذة تصحيح الأخطاء: ستظهر نافذة نقاط الإيقاف، كما هو موضح في الشكل 7.
تتيح لك نافذة "نقاط الإيقاف" تفعيل أو إيقاف كل نقطة فاصلة من القائمة في الجزء. إذا تم إيقاف نقطة توقف، لن يُوقف Android Studio تطبيقك مؤقتًا عند الوصول إلى نقطة التوقف هذه.
اختَر نقطة توقّف من قائمة لضبط إعداداتها. يمكنك ضبط نقطة إيقاف ليتم إيقافها في البداية وجعل النظام يمكّنه بعد الوصول إلى نقطة توقف مختلفة. يمكنك أيضًا ضبط ما إذا كان يجب إيقاف نقطة الإيقاف بعد . لضبط نقطة إيقاف لأي استثناء، اختَر استثناء. نقاط الإيقاف في قائمة نقاط الإيقاف.
لإيقاف جميع نقاط الإيقاف مؤقتًا، انقر على كتم صوت نقاط الإيقاف في نافذة تصحيح الأخطاء. انقر مرة أخرى لإعادة التفعيل.
تصحيح أخطاء إطارات النوافذ
في نافذة "أداة تصحيح الأخطاء"، تتيح لك لوحة "الإطارات" فحص إطار الحزمة الذي أدّى إلى الوصول إلى نقطة التوقف الحالية. وهذا يمكّن التنقل وفحص إطار المكدس وكذلك فحص قائمة وسلاسل المحادثات في تطبيق Android.
لاختيار سلسلة محادثات، استخدِم "أداة اختيار سلاسل المحادثات". القائمة وعرض إطار المكدس الخاص به. انقر على العناصر في الإطار لفتح المصدر في المحرر. يمكنك أيضًا تخصيص سلسلة المحادثات. وتصدير إطار التكديس كما هو موضح في دليل فحص الإطارات
فحص المتغيّرات
في نافذة "برنامج تصحيح الأخطاء"، تتيح لك لوحة "المتغيّرات" فحص المتغيرات عندما يوقف النظام تطبيقك عند نقطة توقف وتحديد إطار من جزء الإطارات. تتيح لك أيضًا لوحة "المتغيّرات" تقييم التعبيرات المخصّصة باستخدام طرق ثابتة و/أو متغيّرات متاحة ضمن الإطار المحدّد.
لإضافة تعبير إلى شجرة الكائنات (أثناء تصحيح أخطاء التطبيق):
بدلاً من ذلك، إذا كانت شجرة الكائنات تحتوي على التعبير الذي تريد مراقبته، يمكنك سحب هذا التعبير إلى أعلى الشجرة لإضافته كتعبير تمت مراقبته.
سيتم تعديل التعبيرات التي تمت مشاهدتها عند الوصول إلى نقاط التوقف أو عند التنقل في الرمز.
ستظل التعبيرات التي تم تقييمها معروضة أعلى شجرة العنصر إلى أن يتم يدويًا لتقييم تعبير آخر أو التنقل في التعليمات البرمجية.
لإزالة تعبير مراقب من شجرة الكائنات، انقر بزر الماوس الأيمن على التعبير، ثم انقر على إزالة الساعة.
إضافة نقاط مراقبة
أثناء تصحيح أخطاء رمز C/C++ ، يمكنك ضبط أنواع خاصة من نقاط الإيقاف تُسمى نقاط المراقبة، التي يمكنها تعليق معالجة تطبيقك عندما تتفاعل مع جزء معين من الذاكرة. على سبيل المثال، إذا ضع مؤشرين على كتلة من الذاكرة وخصص نقطة لها، باستخدام يؤدي أي من المؤشرين للوصول إلى كتلة الذاكرة إلى تشغيل نقطة المراقبة.
في "استوديو Android"، يمكنك إنشاء نقطة مشاهدة أثناء وقت التشغيل من خلال النقر على متغيرًا معينًا، ولكن LLDB يعين نقطة المراقبة فقط إلى كتلة الذاكرة التي يخصصها النظام لهذا المتغير، وليس المتغير نفسه. هذا النمط عن إضافة متغير إلى جزء الساعات، والذي يمكّن لك ملاحظة قيمة المتغير ولكنه لا يسمح لك بتعليق عملية التطبيق عندما يقرأ النظام قيمته في الذاكرة أو يغيّرها.
ملاحظة: عند خروج عملية تطبيقك من إحدى الدوالّ ويقوم النظام بإلغاء تخصيص متغيّراته المحلية من الذاكرة، عليك إعادة تعيين أي نقاط مراقبة أنشأتها لهذه المتغيّرات.
لضبط نقطة مراقبة، يجب أن تستوفي المتطلبات التالية:
ملاحظة: عند تصحيح أخطاء تطبيقك باستخدام واجهات ABI بسرعة 32 بت، يمكنك إضافة نقطة مراقبة أو التمرير. على المتغيرات داخل التعليمات البرمجية للتحقيق وقيمها إلى حدوث عطل. وكحل بديل، يمكنك تصحيح الأخطاء باستخدام معالجات ARM 64 بت، البرامج الثنائية x86 أو x86_64. سيتم إصلاح هذه المشكلة في إصدار "استوديو Android" القادم.
في حال استيفاء المتطلبات، يمكنك إضافة نقطة مراقبة على النحو التالي:
للاطّلاع على كل نقاط المراقبة وضبط إعدادات نقاط المراقبة، انقر على عرض نقاط الإيقاف. في نافذة تصحيح الأخطاء. تشير رسالة الأشكال البيانية وسيظهر مربع حوار نقاط الإيقاف، كما هو موضح في الشكل 10.
بعد إضافة نقطة المشاهدة، انقر على استئناف البرنامج. في نافذة تصحيح الأخطاء لاستئناف تطبيقك الدفع. بشكل تلقائي، إذا حاول تطبيقك الوصول إلى جزء من الذاكرة لديك نقطة مراقبة، يعلق نظام Android عملية تطبيقك يظهر رمز نقطة المراقبة بجانب سطر الرمز الذي يستخدمه تطبيقك. وتنفيذه أخيرًا، كما هو موضح في الشكل 11.
عرض تنسيق عرض قيمة المورد وتغييره
في وضع تصحيح الأخطاء، يمكنك عرض قيم الموارد واختيار تنسيق عرض مختلف للمتغيّرات في رمز Java أو Kotlin. مع عرض علامة تبويب "المتغيّرات" وإطار المحددة، قم بما يلي:
لإنشاء تنسيق مخصّص، اتّبِع الخطوات التالية: