گزارشهای خرابی قابل خواندن را در داشبورد Crashlytics دریافت کنید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
بهطور پیشفرض، Firebase Crashlytics بهطور خودکار فایلهای نماد اشکالزدایی (dSYM) شما را پردازش میکند تا گزارشهای خرابی ابهامزداییشده و قابل خواندن توسط انسان را به شما ارائه دهد. شما معمولاً این رفتار را در طول راه اندازی اولیه Crashlytics در برنامه خود پیکربندی می کنید، به ویژه با افزودن یک اسکریپت اجرا که به طور خودکار فایل های dSYM را در مرحله ساخت برنامه شما آپلود می کند.
متأسفانه، چند مورد وجود دارد که میتواند باعث شود آپلود خودکار فایلهای dSYM شما با شکست مواجه شود. این راهنما راههایی برای عیبیابی زمانی که Crashlytics نمیتواند فایلهای dSYM برنامه شما را پیدا کند، ارائه میکند.
مطمئن شوید که Xcode می تواند به طور خودکار dSYM ها را پردازش کرده و فایل ها را آپلود کند
مطمئن شوید که پیکربندی شما برای اسکریپت اجرا Crashlytics با الزامات جدیدی که با Xcode 15 شروع شده است به روز است. اگر پیکربندی شما به روز نیست، ممکن است با خطای زیر مواجه شوید: error: Info.plist Error Unable to process Info.plist at path ... .
به طور خاص، Xcode 15 و نسخه های جدیدتر نیاز دارد که مجموعه کامل تری از مکان های فایل را ارائه دهید. برای اسکریپت اجرای Crashlytics ( firebase-ios-sdk/Crashlytics/run )، مطمئن شوید که تنظیمات زیر را دارید:
روی تب Build Phases کلیک کنید و سپس بخش Run Script را گسترش دهید.
در بخش فایل های ورودی ، مطمئن شوید که مسیرهای مکان فایل های زیر را دارید:
درک کنید که چرا مکان های این فایل ها مورد نیاز است
Xcode در مکان های مشخص شده برای این فایل های ورودی جستجو می کند تا مطمئن شود که فایل های ساخت برای اسکریپت اجرا در دسترس هستند. همچنین، اگر User Script Sandboxing فعال باشد، Xcode فقط به اسکریپت اجرا شده اجازه دسترسی به فایلهای مشخصشده در فایلهای ورودی را میدهد.
ارائه مکان فایلهای dSYM پروژه شما، Crashlytics قادر میسازد تا dSYMها را پردازش کند.
ارائه مکان فایل GoogleService-Info.plist ساخته شده برنامه شما Crashlytics قادر می سازد dSYM ها را با برنامه Firebase شما مرتبط کند.
ارائه مکان فایل اجرایی برنامه شما به اسکریپت اجرا اجازه می دهد تا از آپلودهای تکراری همان dSYM جلوگیری کند. توجه داشته باشید که باینری های برنامه آپلود نمی شوند.
بررسی کنید آیا Xcode در حال تولید dSYM است یا خیر
اغلب اوقات، فایلهای dSYM ناپدید میشوند زیرا Xcode آنها را تولید نمیکند. هنگامی که آپلود ناموفق است، Crashlytics یک هشدار "DSYM گم شده" را در کنسول Firebase نمایش می دهد. اگر این هشدار را دریافت کردید، ابتدا بررسی کنید که Xcode dSYM درستی را برای هر بیلد تولید می کند:
پروژه خود را در Xcode باز کنید و سپس فایل پروژه را در Xcode Navigator انتخاب کنید.
هدف ساخت اصلی خود را انتخاب کنید.
برگه Build Settings را باز کنید و سپس روی All کلیک کنید.
debug information format جستجو کنید.
فرمت اطلاعات اشکال زدایی رابا فایل dSYM برای همه انواع ساخت خود روی DWARF تنظیم کنید.
دستور زیر را اجرا کنید تا تمام UUID های dSYM خود را در دستگاه خود نمایش دهید و dSYM گم شده را جستجو کنید:
mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done
هنگامی که dSYM را پیدا کردید، آن را به صورت دستی در Crashlytics آپلود کنید . اگر دستور mdfind هیچ نتیجهای را برنمیگرداند، میتوانید به فهرست Products جایی که .app شما زندگی میکند نگاه کنید (بهطور پیشفرض، فهرست Products در Derived Data قرار دارد). اگر برنامه شما برای تولید منتشر شد، میتوانید dSYM آن را در فهرست .xcarchive روی دیسک نیز جستجو کنید:
در Xcode، پنجره Organizer را باز کنید و سپس برنامه خود را از لیست انتخاب کنید. Xcode لیستی از آرشیوهای پروژه شما را نمایش می دهد.
برای مشاهده بایگانی در Finder روی آن کنترل کلیک کنید. دوباره روی آن Control کلیک کنید و سپس روی Show Package Contents کلیک کنید.
در .xcarchive یک دایرکتوری dSYMs است که حاوی dSYMهایی است که به عنوان بخشی از فرآیند بایگانی Xcode تولید شده است.
dSYM های خود را آپلود کنید
Crashlytics از روشهای متعددی برای آپلود فایلهای dSYMs شما به صورت خودکار یا دستی پشتیبانی میکند.
(توصیه می شود) dSYM های خود را به صورت خودکار پردازش کرده و فایل ها را آپلود کنید
هنگامی که در ابتدا Crashlytics را راهاندازی کردید، به احتمال زیاد این رفتار آپلود خودکار را برای برنامه خود پیکربندی کردهاید. با این حال، اگر آپلود خودکار ناموفق بود، بررسی کنید که پیکربندی شما درست باشد .
فایل های dSYM خود را به صورت دستی آپلود کنید
اگر آپلود خودکار ناموفق بود، می توانید فایل های dSYM خود را با استفاده از یکی از گزینه های زیر به صورت دستی آپلود کنید.
گزینه 1 : از گزینه "Drag and Drop" مبتنی بر کنسول برای آپلود یک فایل فشرده حاوی فایل های dSYM خود استفاده کنید (به کنسول Firebase > Crashlytics > تب dSYMs بروید).
گزینه 2 : از اسکریپت upload-symbols استفاده کنید که می توانید از هر جایی در فرآیند ساخت خود تماس بگیرید تا فایل های dSYM خود را به صورت دستی آپلود کنید. برای اجرای اسکریپت upload-symbols ، از یکی از گزینه های زیر استفاده کنید:
تاریخ آخرین بهروزرسانی 2025-09-03 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-09-03 بهوقت ساعت هماهنگ جهانی."],[],[],null,["\u003cbr /\u003e\n\niOS+ Android Flutter Unity \n\n\u003cbr /\u003e\n\nBy default, Firebase Crashlytics automatically processes your debug symbol\n(dSYM) files to give you deobfuscated and human-readable crash reports. You\nusually configure this behavior during the initial setup of Crashlytics in\nyour app, specifically by\n[adding a run script](/docs/crashlytics/get-started?platform=ios#set-up-dsym-uploading)\nthat automatically uploads dSYM files during your app's build phase.\n\nUnfortunately, there are a few cases that could cause your automatic dSYM files\nupload to fail. This guide provides some ways to troubleshoot when\nCrashlytics can't locate your app's dSYM files.\n\nMake sure Xcode can automatically process dSYMs and upload the files\n\nWhen setting up Crashlytics in your app, you\n[configured a run script](/docs/crashlytics/get-started?platform=ios#set-up-dsym-uploading)\nto automatically process dSYMs and upload the files.\n\nMake sure that your configuration for the Crashlytics run script is\nup-to-date with the new requirements which started with Xcode 15. If your\nconfiguration isn't up-to-date, you might be getting the following error: \n\n`error: Info.plist Error Unable to process Info.plist at path ...`.\n\nSpecifically, Xcode 15 and later requires that you provide a more complete set\nof file locations. For your Crashlytics run script\n(`firebase-ios-sdk/Crashlytics/run`), make sure that you have the following\nsetup:\n\n1. Click the **Build Phases** tab, and then expand the *Run Script* section.\n\n2. In the *Input Files* section, make sure you have the paths for the locations\n of the following files:\n\n ```\n ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}\n ``` \n\n ```\n ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}\n ``` \n\n ```\n ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\n ``` \n\n ```\n $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist\n ``` \n\n ```\n $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)\n ```\n If you have `ENABLE_USER_SCRIPT_SANDBOXING=YES` and `ENABLE_DEBUG_DYLIB=YES` in your project build settings, then include the following: \n\n ```\n ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib\n ```\n **Understand why the locations of these files are\n needed**\n\n Xcode looks in the specified locations for these input files to ensure\n that the build files are available for the run script. Also, if\n *User Script Sandboxing* is enabled, Xcode only allows the run\n script to access files specified in the *Input Files*.\n - Providing the location of your project's dSYM files enables Crashlytics to process dSYMs.\n - Providing the location of your app's built `GoogleService-Info.plist` file enables Crashlytics to associate the dSYMs with your Firebase app.\n - Providing the location of your app's executable allows the run script to prevent duplicate uploads of the same dSYM. Note that app binaries are *not uploaded*.\n\nCheck if Xcode is producing dSYMs\n\nMore often than not, dSYM files go missing because Xcode simply isn't producing\nthem. When an upload fails, Crashlytics displays a \"Missing dSYM\" alert in\nthe Firebase console. If you get this alert, first check that Xcode is\nproducing the correct dSYM for every build:\n\n1. Open your project in Xcode, and then select the project file in the Xcode\n Navigator.\n\n2. Select your main build target.\n\n3. Open the target's **Build Settings** tab, and then click **All**.\n\n4. Search for `debug information format`.\n\n5. Set **Debug Information Format** to **DWARF with dSYM File** for all\n your build types.\n\n6. Rebuild your app.\n\nYour crash reports should now appear in the\n[Crashlytics dashboard](https://console.firebase.google.com/project/_/crashlytics). If the problem persists or you\nencounter other errors, try [locating your dSYMs](#locate) and\n[uploading them to Crashlytics manually](#upload-dsyms).\n\nLocate your dSYMs on a local machine\n\nRun the following command to display all your dSYMs' UUIDs on your machine and\nsearch for the missing dSYM: \n\n```text\nmdfind -name .dSYM | while read -r line; do dwarfdump -u \"$line\"; done\n```\n\nOnce you find the dSYM, [manually upload it to Crashlytics](#upload-dsyms).\nIf the `mdfind` command doesn't return any results, you can look in the\n`Products` directory where your `.app` lives (by default, the `Products`\ndirectory is located in `Derived Data`). If your app is released to production,\nyou can also look for its dSYM in the `.xcarchive` directory on disk:\n\n1. In Xcode, open the **Organizer** window, and then select your app from the\n list. Xcode displays a list of archives for your project.\n\n2. Control-click an archive to view it in Finder. Control-click it again, and\n then click **Show Package Contents**.\n\n3. Within `.xcarchive` is a dSYMs directory that contains dSYMs generated as\n part of Xcode's archiving process.\n\nUpload your dSYMs\n\nCrashlytics supports multiple ways to upload your dSYMs files, either\n[automatically](#auto-upload-dsyms) or [manually](#manually-upload-dsyms).\n\n*(Recommended)* Automatically process your dSYMs and upload the files\n\nWhen you initially set up Crashlytics, you most likely configured this\nautomatic upload behavior for your app. However, if automatic uploads are\nfailing, [check that your configuration is correct](#check-input-files-setup).\n\nManually upload your dSYM files\n\nIf automatic uploads are failing, you can manually upload your dSYM files using\neither of the following options.\n\n- **Option 1** : Use the console-based \"Drag and Drop\" option to upload a zip\n file containing your dSYM files (go to the\n Firebase console \\\u003e\n [Crashlytics](https://console.firebase.google.com/project/_/crashlytics) \\\u003e\n *dSYMs* tab).\n\n- **Option 2** : Use the `upload-symbols` script that you can call from\n anywhere in your build process to manually upload your dSYM files. To run the\n `upload-symbols` script, use either of the following options:\n\n - **Option A**: Include the following line in your build process:\n\n ```gdscript\n find dSYM_DIRECTORY -name \"*.dSYM\" | xargs -I \\{\\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \\{\\}\n ```\n - **Option B**: Run the script directly from your terminal:\n\n ```\n /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs\n ```\n\n For usage notes and additional instructions about this script, run\n `upload-symbols` with the `--help` parameter."]]