موبائل ڈویلپمنٹ میں کریش رپورٹنگ — یہ کیا ہے، خدمات اور ترتیب

مصنف: IT Sectr اشاعت: 2026-05-27 مطالعے کا وقت: 8 منٹ

کریش رپورٹنگ موبائل ایپ کریش کے بارے میں معلومات جمع کرنے، پروسیسنگ اور تجزیہ کرنے کا ایک نظام ہے، جو ڈویلپرز کو پروڈکشن میں خرابیوں کا پتہ لگانے اور انہیں دور کرنے کے قابل بناتا ہے۔ Google Firebase، 2024 کے مطابق، کریش رپورٹنگ کو نافذ کرنے سے مسئلہ کی تشخیص کا وقت گھنٹوں سے منٹوں تک کم ہو جاتا ہے اور ریلیز کے استحکام میں 35–50% اضافہ ہوتا ہے۔ اس طرح کے نظام کے بغیر، ڈویلپرز کریش کے بارے میں صارفین کے جائزوں سے ہی جان سکتے ہیں۔

اہم نکات

  • کریش رپورٹنگ — ماحول کے سیاق و سباق اور کال اسٹیک کے ساتھ ایپ کریش ڈیٹا کا خودکار جمع کرنا
  • Firebase Crashlytics — سب سے مشہور کریش رپورٹنگ سروس، مفت اور Google ایکو سسٹم کے ساتھ مربوط
  • Sentry — جدید تجزیہ کی صلاحیتوں اور 80+ پروگرامنگ زبانوں کی معاونت کے ساتھ اوپن سورس پلیٹ فارم
  • کال اسٹیک — ہر کریش رپورٹ میں لائن نمبرز اور طریقوں کے ناموں کے ساتھ مکمل کال اسٹیک ہوتا ہے
  • غیر مہلک رپورٹس — کریش کے علاوہ، نظام ہینڈل کردہ مستثنیات کو لاگ کرتے ہیں، جو ایپ میں خرابیوں کی مکمل تصویر دیتے ہیں

کریش رپورٹنگ کیا ہے؟

کریش رپورٹنگ ایپ کریش کے بارے میں تکنیکی معلومات خود بخود جمع کرنے اور تجزیہ کے لیے سرور پر مرکزی طور پر منتقل کرنے کا عمل ہے۔ لاگنگ کے برعکس، کریش رپورٹنگ خاص طور پر ہنگامی صورتحال کو کیپچر کرتی ہے — وہ لمحہ جب ایپ کو سسٹم یا OS نے زبردستی ختم کیا تھا۔

ہر کریش رپورٹ میں تین اہم اجزاء ہوتے ہیں: مستثنیٰ کی قسم (NullPointerException, SIGSEGV, NSInternalInconsistencyException)، لائن نمبروں کے ساتھ مکمل کال اسٹیک، اور ماحول کی معلومات — OS ورژن، ڈیوائس ماڈل، خالی میموری کا سائز۔ Sentry Engineering، 2024 کے مطابق، ان تین عناصر کا مجموعہ 85% اہم خرابیوں کو دوبارہ پیدا کرنے اور ٹھیک کرنے کی اجازت دیتا ہے۔

جدید کریش رپورٹنگ سسٹم عام کریش سے آگے فعالیت کو بڑھاتے ہیں۔ Firebase Crashlytics بار بار ہونے والے کریش کو خود بخود مسائل میں گروپ کرتا ہے، Sentry ریلیز کے درمیان تنزلی کو ٹریک کرتا ہے، اور Bugsnag خرابی تک صارف کا راستہ دکھاتا ہے۔ تینوں خدمات iOS، Android، React Native اور Flutter کو سپورٹ کرتی ہیں۔

Google I/O 2024 کے مطابق، کریش رپورٹنگ کے بغیر ایپس ایک اہم خرابی کی تشخیص میں اوسطاً 3–5 کاروباری دن صرف کرتی ہیں، جبکہ Crashlytics کے ساتھ 15–30 منٹ لگتے ہیں۔ ہر واقعہ کے لیے وقت کی بچت 90% سے زیادہ ہے۔

کریش رپورٹ جمع کرنے کا نظام کیسے کام کرتا ہے

فن تعمیر کریش رپورٹنگ سسٹم تین تہوں پر مشتمل ہے: ایپ میں نصب کلائنٹ SDK، رپورٹس وصول کرنے اور پروسیس کرنے کے لیے سرور API، اور تجزیہ کے لیے ویب ڈیش بورڈ۔ کلائنٹ SDK غیر ہینڈل شدہ مستثنیات کو روکتا ہے، انہیں JSON میں ترتیب دیتا ہے اور اگلی ایپ لانچ پر سرور کو بھیجتا ہے۔

کریش رپورٹ جمع کرانا ایپ ری اسٹارٹ کے بعد غیر مطابقت پذیر طور پر ہوتا ہے۔ یہ ایک بنیادی نکتہ ہے: کریش کے لمحے، ایپ نیٹ ورک پر ڈیٹا کی کامیاب ترسیل کی ضمانت نہیں دے سکتی۔ SDK رپورٹ کو مقامی اسٹوریج میں لکھتا ہے، اور اگلی لانچ پر اسے بیک گراؤنڈ تھریڈ کے ذریعے بھیجتا ہے۔ Firebase Engineering، 2024 کے مطابق، یہ طریقہ 99.7% کریش رپورٹس کی ترسیل کو یقینی بناتا ہے۔

غیر مہلک مستثنیات (try-catch کے اندر ہینڈل شدہ مستثنیات) کے لیے، SDK رپورٹ فوراً بھیجتا ہے کیونکہ ایپ کام جاری رکھتی ہے۔ غیر مہلک رپورٹس میں کریش جیسا ہی ڈیٹا ہوتا ہے لیکن صارف کے سیشن میں خلل نہیں ڈالتیں۔ یہ API درخواست کی غلطیوں، ڈیٹا کی توثیق اور کاروباری منطق کو ٹریک کرنے کے لیے خاص طور پر مفید ہے۔

کریش گروپنگ — ایک سرور الگورتھم جو آخری 5–10 اسٹیک فریموں کے ہیش کی بنیاد پر ایک جیسے کریش کو ضم کرتا ہے۔ یہ ڈویلپر کو 1000 انفرادی رپورٹس نہیں بلکہ مختلف ڈیوائسز اور OS ورژنز میں 1000 واقعات کے ساتھ ایک مسئلہ دیکھنے کی اجازت دیتا ہے۔

Firebase Crashlytics: انضمام اور صلاحیتیں

Firebase Crashlytics موبائل ایپس کے لیے کریش رپورٹنگ کی سب سے مشہور سروس ہے، جو دنیا بھر میں 3 ملین سے زیادہ پروجیکٹس میں استعمال ہوتی ہے۔ مفت منصوبہ میں لامحدود رپورٹس، Google Analytics انضمام اور خودکار کریش گروپنگ شامل ہے۔

Android پر Crashlytics انضمام

سیٹ اپ Android پر Crashlytics کم سے کم ہے: build.gradle میں انحصار شامل کریں اور Application.onCreate میں SDK کو شروع کریں۔ Crashlytics خود بخود اپنا Thread.setDefaultUncaughtExceptionHandler سیٹ کرتا ہے، تمام غیر ہینڈل شدہ مستثنیات کو روکتا ہے۔

kotlin
// build.gradle.kts
id("com.google.firebase.crashlytics") version "3.0.2"

// Application.kt
class App : Application() {
    override fun onCreate() {
        super.onCreate()
        FirebaseCrashlytics.getInstance()
            .setCustomKey("environment", "production")
    }

    fun logNonFatal(error: Throwable) {
        FirebaseCrashlytics.getInstance()
            .recordException(error)
    }
}

اہم صلاحیت Crashlytics کی — حسب ضرور کنجیاں اور لاگز۔ ڈویلپر ہر کریش رپورٹ میں 64 کلید-قدر جوڑوں تک شامل کر سکتا ہے: اسکرین کی حالت، منتخب کردہ منصوبہ، صارف کی سطح۔ حسب ضرورت لاگ پیغامات بھی دستیاب ہیں، جو تاریخ وار ترتیب میں رپورٹ میں ظاہر ہوتے ہیں۔

Velocity Alert — خودکار تنزلی کا پتہ لگانا

Velocity Alert Crashlytics کی ایک خصوصیت ہے جو کسی مخصوص مسئلے کے لیے کریش کی تعداد میں تیزی سے اضافے کی نگرانی کرتی ہے۔ اگر نئی ریلیز کے بعد کریش کی تعداد ایک حد سے تجاوز کر جائے تو ٹیم کو صارفین کی بڑے پیمانے پر شکایات سے 5–15 منٹ پہلے پش نوٹیفکیشن اور ای میل موصول ہوتی ہے۔

فعال ہونے کی حد کی ترتیب: اہم مسائل کے لیے 1 گھنٹے میں 2x۔ Google، 2024 کے مطابق، Velocity Alert کو فعال رکھنے والی ٹیمیں دستی ڈیش بورڈ نگرانی پر انحصار کرنے والی ٹیموں کے مقابلے میں اوسطاً 40% تیزی سے ہاٹ فکس ریلیز جاری کرتی ہیں۔

iOS پر Crashlytics انضمام

iOS پر Crashlytics SDK CocoaPods یا Swift Package Manager کے ذریعے ضم ہوتا ہے۔ SDK اپنے mach مستثنیٰ ہینڈلر کے ذریعے Objective-C مستثنیات (NSSetUncaughtExceptionHandler کے ذریعے) اور OS سگنلز (SIGSEGV, SIGABRT) دونوں کو روکتا ہے۔

Apple Developer، 2024 کے مطابق، iOS کے لیے Crashlytics تمام کریش اقسام کے 98% تک کو ہینڈل کرتا ہے، بشمول نچلی سطح کی میموری کی غلطیاں جو معیاری ٹولز سے پکڑی نہیں جاتیں۔ یہ Crashlytics کو iOS ڈویلپمنٹ کے لیے حقیقی معیار بناتا ہے۔

Sentry اور Bugsnag: متبادل پلیٹ فارم

Sentry ایک اوپن سورس خرابی کی نگرانی کا پلیٹ فارم ہے جو 80+ زبانیں اور فریم ورک سپورٹ کرتا ہے۔ Crashlytics کے برعکس، Sentry بیک اینڈ ڈویلپرز کو ہدف بناتا ہے لیکن iOS، Android، React Native اور Flutter کے لیے مکمل خصوصیات والے SDK فراہم کرتا ہے۔

Sentry کا اہم فائدہ ایک ہی ڈیش بورڈ میں کارکردگی کی نگرانی ہے۔ ڈویلپرز نہ صرف کریش دیکھتے ہیں بلکہ وہ لین دین بھی دیکھتے ہیں جو ان کا باعث بنے: سست نیٹ ورک درخواستیں، UI جمنا، طویل ڈیٹا بیس آپریشنز۔ Sentry، 2024 کے مطابق، 40% کریش میں پہلے سے کارکردگی کے مسائل ہوتے ہیں جو اس طریقہ کار کے بغیر غیر محسوس رہتے ہیں۔

Bugsnag خرابیوں کو گروپ کرنے کے طریقہ کار میں مختلف ہے — کال اسٹیک کے بجائے، یہ صارف کے سفر کا تجزیہ کرتا ہے۔ ہر کریش رپورٹ میں اسکرینوں اور صارف کے اقدامات کا سلسلہ ہوتا ہے جو خرابی کا باعث بنا۔ یہ پیچیدہ کاروباری عمل کے لیے خاص طور پر مفید ہے: آرڈر دینا، رجسٹریشن، ادائیگی۔

خدمات کے اخراجات مختلف ہیں: Crashlytics Firebase کے اندر مفت ہے، Sentry ماہانہ 5000 واقعات کے لیے مفت منصوبہ پیش کرتا ہے، Bugsnag ماہانہ $29 سے شروع ہوتا ہے۔ تینوں پلیٹ فارم اوپن سورس SDK فراہم کرتے ہیں۔ سروس کا انتخاب ٹیم کے سائز، بجٹ اور ڈیٹا سیکیورٹی کی ضروریات پر منحصر ہے۔

iOS پر کریش رپورٹنگ: خصوصیات اور NSException

iOS کی خصوصیت — ایک کثیر سطحی خرابی ہینڈلنگ فن تعمیر۔ کریش رپورٹنگ SDKs کو Objective-C مستثنیات (NSException)، Swift غلطیاں (Error)، POSIX سگنلز (SIGSEGV, SIGBUS) اور mach مستثنیات کو روکنا چاہیے۔ ہر قسم کے لیے ایک علیحدہ روکنے کا طریقہ کار درکار ہے۔

NSException NSSetUncaughtExceptionHandler کے ذریعے روکنے کی سب سے آسان قسم ہے۔ تاہم، Apple، 2024 کے مطابق، جدید Swift ایپس میں صرف 30% کریش NSException ہیں۔ باقی 70% OS سگنلز اور Swift رن ٹائم غلطیاں ہیں، جن کے لیے mach مستثنیٰ ہینڈلر طریقہ کار کی ضرورت ہوتی ہے۔

iOS ڈویلپرز کو مختلف اقسام کے مقامی کریش جنریشن کے ذریعے کریش رپورٹنگ کو ٹیسٹ کرنا چاہیے: سگنلز کے لیے __builtin_trap()، مستثنیات کے لیے [NSException raise:...]، Swift کے لیے fatalError()۔ صرف اس طرح یقینی بنایا جا سکتا ہے کہ SDK تمام کریش اقسام کا احاطہ کرتا ہے۔

Android پر کریش رپورٹنگ: ANR اور مقامی کریش

Android دو مخصوص کریش اقسام کا اضافہ کرتا ہے جو iOS پر موجود نہیں ہیں: ANR (ایپلیکیشن جواب نہیں دے رہی) اور C/C++ کوڈ میں مقامی کریش۔ ANR اس وقت ہوتا ہے جب UI تھریڈ 5 سیکنڈ سے زیادہ بلاک ہو — سسٹم ایک "ایپ جواب نہیں دے رہی" ڈائیلاگ دکھاتا ہے اور اسے بند کرنے کا مشورہ دیتا ہے۔

معیاری Thread.setDefaultUncaughtExceptionHandler ANR کو نہیں روکتا، کیونکہ یہ کوئی استثنیٰ نہیں بلکہ ActivityManager سے ایک سگنل ہے۔ ANR کو ٹریک کرنے کے لیے، Crashlytics اور Sentry ایک بیک گراؤنڈ واچ ڈاگ تھریڈ استعمال کرتے ہیں جو ہر 5 سیکنڈ میں UI تھریڈ کی ردعمل کو چیک کرتا ہے۔ Firebase، 2024 کے مطابق، Android کے تمام مسائل میں سے 15% ANR ہیں، کریش نہیں۔

مقامی کریش Android پر JNI (Java Native Interface) کے ذریعے چلنے والے C/C++ کوڈ میں ہوتے ہیں۔ یہ کریش Java استثنیات نہیں ہیں اور Thread.setDefaultUncaughtExceptionHandler کے ذریعے نہیں روکے جاتے۔ ان کو ہینڈل کرنے کے لیے Google Breakpad یا Crashpad استعمال کیا جاتا ہے، جو SIGSEGV، SIGABRT، SIGBUS سگنلز کے لیے sigaction ہینڈلر نصب کرتے ہیں۔

Google I/O 2024 کے مطابق، گیم انجنوں (Unity, Unreal Engine) اور کمپیوٹر وژن لائبریریوں (ML Kit, OpenCV) کے پھیلاؤ کے ساتھ مقامی کریش کی تعداد بڑھ رہی ہے۔ ہائبرڈ ایپ ڈویلپرز کو ہمیشہ مقامی کریش رپورٹنگ کو فعال کرنے کی سفارش کی جاتی ہے۔

اکثر پوچھے گئے سوالات

کریش رپورٹنگ عام لاگنگ سے کیسے مختلف ہے؟

کریش رپورٹنگ مکمل سیاق و سباق (کال اسٹیک، میموری کی حالت، OS ورژن) کے ساتھ صرف ہنگامی صورتحال کو کیپچر کرتا ہے۔ لاگنگ تمام ایپ واقعات کو ریکارڈ کرتی ہے۔ کریش رپورٹنگ خود بخود ڈیٹا سرور کو بھیجتی ہے، لاگنگ کو دستی تجزیہ کی ضرورت ہوتی ہے۔

اسٹارٹ اپ کو کون سی کریش رپورٹنگ سروس منتخب کرنی چاہیے؟

Firebase Crashlytics اسٹارٹ اپ کے لیے بہترین انتخاب ہے: مفت، ضم کرنا آسان، iOS اور Android کو سپورٹ کرتا ہے۔ جیسے جیسے پروجیکٹ بڑھتا ہے، کارکردگی کی نگرانی کے لیے Sentry یا صارف کے سفر کے تجزیہ کے لیے Bugsnag شامل کیا جا سکتا ہے۔

کیا بند انٹرپرائز پروجیکٹس میں کریش رپورٹنگ استعمال کی جا سکتی ہے؟

ہاں — Sentry ایک خود میزبان ورژن پیش کرتا ہے جو آپ کے اپنے سرورز پر تعینات ہوتا ہے۔ تمام ڈیٹا کمپنی کے بنیادی ڈھانچے کے اندر رہتا ہے۔ Crashlytics اور Bugsnag بالترتیب Google اور SmartBear سرورز کے ساتھ صرف کلاؤڈ سروسز کے طور پر کام کرتے ہیں۔

کریش رپورٹنگ ایپ کے سائز کو کیسے متاثر کرتی ہے؟

کم سے کم — Crashlytics SDK APK/IPA سائز میں ~300 KB کا اضافہ کرتا ہے۔ Sentry — ~500 KB۔ دونوں خدمات Android کے لیے ProGuard/R8 مبہم کاری اور iOS کے لیے Bitcode کو سپورٹ کرتی ہیں، جو حتمی بائنری فائل کے سائز پر اثر کو کم کرتی ہیں۔

کریش رپورٹ کیوں نہیں آ سکتی؟

بنیادی وجوہات: ہینڈلر ٹائم آوٹ کی میعاد ختم ہونا (iOS 5 سیکنڈ، Android 100 ms)، بعد میں لانچ پر نیٹ ورک کی کمی، مقامی اسٹوریج کا خراب ہونا۔ Crashlytics ہینڈلر کے وقت کی حد کی پابندی کرنے پر 99.7% رپورٹس کی ترسیل کی ضمانت دیتا ہے۔

خلاصہ

  • کریش رپورٹنگ — پروڈکشن ایپ کا لازمی جزو، خرابی کی تشخیص کو دنوں سے منٹوں تک کم کرتا ہے
  • Firebase Crashlytics — مفت منصوبہ اور مسائل میں خودکار کریش گروپنگ کے ساتھ مارکیٹ لیڈر
  • Sentry — کارکردگی کی نگرانی اور خود میزبانی تعیناتی کے ساتھ اوپن سورس متبادل
  • iOS کریش رپورٹنگ کو مکمل کوریج کے لیے NSException، POSIX سگنلز اور mach مستثنیات کو روکنے کی ضرورت ہے
  • Android ANR معیاری Thread.setDefaultUncaughtExceptionHandler کے ذریعے نہیں پکڑا جاتا — واچ ڈاگ تھریڈ درکار ہے
  • JNI کوڈ میں مقامی کریش sigaction ہینڈلرز کے ساتھ Breakpad یا Crashpad کے ذریعے ہینڈل کیے جاتے ہیں
  • غیر مہلک رپورٹس صارف کے سیشن میں خلل ڈالے بغیر ہینڈل کردہ مستثنیات اور کاروباری منطق تک کوریج بڑھاتی ہیں

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں