تصحيح أخطاء مشروعك

تصحيح أخطاء أعطال الإعلانات المدمجة مع المحتوى

إذا كنت تواجه صعوبة في فهم مخلفة حادث أو شاهد قبر حادث أصلي، تصحيح أخطاء رمز نظام Android الأساسي الأصلي مقدمة جيدة.

للحصول على كتالوج كامل بأنواع الأعطال الشائعة وكيفية التحقيق فيها، يُرجى الاطّلاع على تشخيص الأعطال الأصلية:

يمكن أن تساعد أداة ndk-stack في ترميز الأعطال التي تواجهها. يمكنك تصحيح الأعطال في "استوديو Android" كما هو موضّح بشكل عام. مستندات تصحيح أخطاء التطبيق إذا كنت تفضل استخدام سطر الأوامر، فإن ndk-gdb تتيح لك إرفاق gdb أو lldb من الصدفة.

منح التطبيقات إمكانية الوصول المباشر إلى سجلّ آثار القبور

بدءًا من الإصدار Android 12 (المستوى 31 لواجهة برمجة التطبيقات)، يمكنك الوصول إلى الأعطال الأصلية في تطبيقك. Tombstone في صورة المخزن المؤقت للبروتوكول من خلال ApplicationExitInfo.getTraceInputStream() . يكون المخزن المؤقت للبروتوكول تسلسليًا باستخدام هذا المخطط. في السابق، كانت الطريقة الوحيدة للوصول إلى هذه المعلومات هي عبر Android Debug Bridge (adb).

إليك مثال على كيفية تنفيذ ذلك في تطبيقك:

ActivityManager activityManager: ActivityManager = getSystemService(Context.ACTIVITY_SERVICE);
MutableList<ApplicationExitInfo> exitReasons = activityManager.getHistoricalProcessExitReasons(/* packageName = */ null, /* pid = */ 0, /* maxNum = */ 5);
for (ApplicationExitInfo aei: exitReasons) {
    if (aei.getReason() == REASON_CRASH_NATIVE) {
        // Get the tombstone input stream.
        InputStream trace = aei.getTraceInputStream();
        // The tombstone parser built with protoc uses the tombstone schema, then parses the trace.
        Tombstone tombstone = Tombstone.parseFrom(trace);
    }
}

تصحيح أخطاء الذاكرة الأصلية

مطهّر العنوان (HWASan/ASan)

HWAddress Sanitizer (HWASan) و يُعد Address Sanitizer (ASan) مشابهًا لـ Valgrind، لكن بشكل أسرع بكثير وأفضل بكثير المتوافق مع Android.

هذه هي الخيار الأفضل لتصحيح أخطاء الذاكرة على Android.

تصحيح أخطاء مالوك

عرض تصحيح أخطاء Maloc أو تتبُّع الذاكرة الأصلية باستخدام استدعاءات libc للحصول على وصف شامل للخيارات المضمنة في مكتبة C لتصحيح الأخطاء مشكلات الذاكرة الأصلية.

خُطافات مالوك

إذا أردت إنشاء أدواتك الخاصة، تتيح libc في Android أيضًا اعتراض جميع عمليات التخصيص/المكالمات المجانية التي تحدث أثناء تنفيذ البرنامج. يمكنك الاطّلاع على مستندات malloc_hooks للحصول على تعليمات الاستخدام.

إحصاءات مالوك

يتيح Android mallinfo(3) أو malloc_info(3) الإضافات إلى <malloc.h>.

تتوفر وظيفة malloc_info في نظام التشغيل Android 6.0 (Marshmallow) وتم توثيق مخطط XML الخاص به في هيكل malloc.h .

إنشاء الملفات التعريفية

لتحليل وحدة المعالجة المركزية (CPU) للرموز البرمجية الأصلية، يمكنك استخدام Simpleperf.