الفرق بين المراجعتين لصفحة: «ReactNative/symbolication»
أنشأ الصفحة ب'== عملية Symbolicating تتبّع المكدس == إذا ألقى تطبيق React Native اعتراضًا غير معالَج في إصدار البناء، فقد...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
== | == ترجمة عناوين Symbolicating تتبّع المكدس == | ||
إن ألقى تطبيق React Native اعتراضًا ليس معالَجًا في إصدار البناء، فقد يكون الخرج غامضًا ويصعب قراءته:<syntaxhighlight lang="bash"> | |||
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: 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: 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: | ||
سطر 7: | سطر 7: | ||
07-15 10:58:25.820 18979 18998 E AndroidRuntime: f@1:131854 | 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 | 07-15 10:58:25.820 18979 18998 E AndroidRuntime: anonymous@1:131119 | ||
</syntaxhighlight>الأقسام | </syntaxhighlight>الأقسام كالقسم <code>p@1:132161</code> هي أسماء دوال مصغَّرة وإزاحات شيفرة ثنائية. قد ترغب بدلًا من ذلك في ترجمتها إلى ملف وسطر واسم دالة مثل: <code>AwesomeProject/App.js:54:initializeMap</code>. تُعرف هذه العملية باسم '''symbolication'''. يمكنك ترجمة أسماء الدوال المصغرة والشيفرة الثنائية كالواردة أعلاه عن طريق تمرير <code>metro-symbolicate</code> لخارطة المصدر المُنشَأة وتتبّع المكدس stack trace.<blockquote>تُثبَّت حزمة <code>metro-symbolicate</code> افتراضيًا في قالب مشروع React Native من خلال [[ReactNative/environment setup|إعداد بيئة التطوير الخاصة بك]].</blockquote>خارطة مصدر من ملف يحتوي على تتبّع المكدس:<syntaxhighlight lang="bash"> | ||
npx metro-symbolicate android/app/build/generated/sourcemaps/react/release/index.android.bundle.map < stacktrace.txt | npx metro-symbolicate android/app/build/generated/sourcemaps/react/release/index.android.bundle.map < stacktrace.txt | ||
</syntaxhighlight>من مجلد <code>adb logcat</code>:<syntaxhighlight lang="bash"> | </syntaxhighlight>خارطة مصدر من مجلد <code>adb logcat</code>:<syntaxhighlight lang="bash"> | ||
adb logcat -d | npx metro-symbolicate android/app/build/generated/sourcemaps/react/release/index.android.bundle.map | adb logcat -d | npx metro-symbolicate android/app/build/generated/sourcemaps/react/release/index.android.bundle.map | ||
</syntaxhighlight>سيؤدي ذلك إلى تحويل كل اسم دالة مصغَّر | </syntaxhighlight>سيؤدي ذلك إلى تحويل كل اسم دالة مصغَّر مع إزاحة مثل <code>p@1:132161</code> إلى اسم الملف الفعلي مع دالة <code>AwesomeProject/App.js:54:initializeMap</code>. | ||
=== ملاحظات حول خارطات المصادر Sourcemaps === | === ملاحظات حول خارطات المصادر Sourcemaps === | ||
* يمكن إنشاء خارطات مصادر متعددة من خلال عملية | * يمكن إنشاء خارطات مصادر متعددة من خلال عملية البناء، لذلك تأكد من استخدام خارطة مصدر في الموقع الموضّح في الأمثلة. | ||
* تأكد من أن خارطة المصدر التي تستخدمها تتوافق مع الالتزام الدقيق للتطبيق المعطَّل، فالتغييرات الصغيرة في الشيفرة المصدرية يمكن أن تسبب اختلافات كبيرة في الإزاحات. | * تأكد من أن خارطة المصدر التي تستخدمها تتوافق مع الالتزام الدقيق للتطبيق المعطَّل، فالتغييرات الصغيرة في الشيفرة المصدرية يمكن أن تسبب اختلافات كبيرة في الإزاحات. | ||
* إذا نجح تنفيذ <code>metro-symbolicate</code> مباشرةً، فتأكد من أن الدخل يأتي من أنبوب pipe أو إعادة توجيه وليس من طرفية. | * إذا نجح تنفيذ <code>metro-symbolicate</code> مباشرةً، فتأكد من أن الدخل يأتي من أنبوب pipe أو من إعادة توجيه وليس من طرفية. | ||
== مصادر == | == مصادر == | ||
* [https://reactnative.dev/docs/symbolication صفحة Symbolicating a stack trace في توثيق React Native الرسمي] | * [https://reactnative.dev/docs/symbolication صفحة Symbolicating a stack trace في توثيق React Native الرسمي.] |
مراجعة 20:31، 5 يونيو 2021
ترجمة عناوين 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 أو من إعادة توجيه وليس من طرفية.