ReactNative/symbolication

من موسوعة حسوب
مراجعة 20:47، 1 يونيو 2021 بواسطة Ola-abbas (نقاش | مساهمات) (أنشأ الصفحة ب'== عملية Symbolicating تتبّع المكدس == إذا ألقى تطبيق React Native اعتراضًا غير معالَج في إصدار البناء، فقد...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

عملية Symbolicating تتبّع المكدس

إذا ألقى تطبيق React Native اعتراضًا غير معالَج في إصدار البناء، فقد يكون الخرج غامضًا ويصعب قراءته:

07-15 10:58:25.820 18979 18998 E AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
07-15 10:58:25.820 18979 18998 E AndroidRuntime: Process: com.awesomeproject, PID: 18979 07-15 10:58:25.820 18979 18998 E AndroidRuntime: com.facebook.react.common.JavascriptException: Failed, js engine: hermes, stack:
07-15 10:58:25.820 18979 18998 E AndroidRuntime: p@1:132161
07-15 10:58:25.820 18979 18998 E AndroidRuntime: p@1:132084
07-15 10:58:25.820 18979 18998 E AndroidRuntime: f@1:131854
07-15 10:58:25.820 18979 18998 E AndroidRuntime: anonymous@1:131119

الأقسام مثل القسم p@1:132161 هي أسماء دوال مصغَّرة وإزاحات شيفرة ثنائية. قد ترغب بدلًا من ذلك في ترجمتها إلى ملف وسطر واسم دالة مثل: AwesomeProject/App.js:54:initializeMap. تثعرف هذه العملية باسم symbolication. يمكنك ترميز أسماء الدوال المصغرة والشيفرة الثنائية كالواردة أعلاه عن طريق تمرير metro-symbolicate لخارطة المصدر المُنشَأة وتتبّع المكدس stack trace.

تُثبَّت حزمة metro-symbolicate افتراضيًا في قالب مشروع React Native من خلال إعداد بيئة التطوير الخاصة بك.

من ملف يحتوي على تتبع المكدّس:

npx metro-symbolicate android/app/build/generated/sourcemaps/react/release/index.android.bundle.map < stacktrace.txt

من مجلد adb logcat:

adb logcat -d | npx metro-symbolicate android/app/build/generated/sourcemaps/react/release/index.android.bundle.map

سيؤدي ذلك إلى تحويل كل اسم دالة مصغَّر وإزاحة مثل p@1:132161 إلى اسم الملف الفعلي والدالة AwesomeProject/App.js:54:initializeMap.

ملاحظات حول خارطات المصادر Sourcemaps

  • يمكن إنشاء خارطات مصادر متعددة من خلال عملية الإنشاء، لذلك تأكد من استخدام خارطة مصدر في الموقع الموضّح في الأمثلة.
  • تأكد من أن خارطة المصدر التي تستخدمها تتوافق مع الالتزام الدقيق للتطبيق المعطَّل، فالتغييرات الصغيرة في الشيفرة المصدرية يمكن أن تسبب اختلافات كبيرة في الإزاحات.
  • إذا نجح تنفيذ metro-symbolicate مباشرةً، فتأكد من أن الدخل يأتي من أنبوب pipe أو إعادة توجيه وليس من طرفية.

مصادر