معرفی دیدبان

پلتفرم گزارش کرش و مانیتورینگ متمرکز بر معماری بومی موبایل برای اندروید و iOS.

دیدبان چیست؟

دیدبان (Didban) یک سیستم گزارش خرابی و رصد سلامت اپلیکیشن‌های موبایل است که از پایه با اولویت پایداری، عملکرد روان، ایمنی پروسس و حفظ حریم خصوصی کاربران طراحی شده است.

دیدبان برای بازیابی رخدادهای مهلک، ثبت محلی و ارسال در اجرای بعدی را به‌کار می‌گیرد. محدودیت‌های ایمنی هندلر نیتیو با مسیرهای JVM و زمان اجرای سطح بالا یکسان نیستند.

دیدبان چه مسائلی را حل می‌کند؟

  • ایمنی پروسس در زمان کرش: اجرای کدهای سنگین، ارتباطات شبکه یا تخصیص حافظه در زمان وقوع استثناهای مهلک می‌تواند باعث قطع ناقص پروسس و از دست رفتن گزارش خطا شود. دیدبان داده‌ها را با استفاده از بافرهای از پیش‌تخصیص‌یافته روی دیسک ذخیره می‌کند.
  • تحلیل هوشمند فریم‌های استک (Stack Intelligence): تفکیک خودکار کدهای اختصاصی پروژه (App Frames) از کدهای فریم‌ورک سیستم‌عامل و کدهای ساخته‌شده توسط کامپایلر (مانند کدهای مصنوعی R8) و نمایش «محل احتمالی بررسی» (Likely Investigation Point).
  • پشتیبانی همزمان از کدهای سطح بالا و نیتیو: ثبت یکپارچه استثناهای JVM، فریزهای رابط کاربری (ANR)، کدهای نیتیو C/C++ در اندروید NDK، و خطاهای مهلک Swift و Objective-C در iOS.
  • عدم عددسازی در آمار سلامت (Truthful Metrics): ارائه نرخ واقعی سشن‌های بدون کرش بر اساس تله‌متری واقعی سشن‌های فعال در پیش‌زمینه. بدون سشن‌های حدسی یا آمارهای ساختگی.

پلتفرم‌های پشتیبانی‌شده

پلتفرمحداقل نسخهزبان‌های پشتیبانی‌شدهوضعیت فعلی توزیع
AndroidAndroid 6.0+ (API 23+)Kotlin, Java, C/C++ (NDK)Early Access (Local / Project Dependency)
iOSiOS 15.0+Swift, Objective-C, CSwift Package Manager (GitLab)

انواع خطاهای قابل ثبت

  • Fatal JVM Crashes (Android): Uncaught exceptions (e.g. NullPointerException, IllegalStateException, IndexOutOfBoundsException).
  • Application Not Responding / ANR (Android): Main-thread responsiveness stalls detected via a 5-second watchdog looper.
  • Native NDK Crashes (Android): Fatal POSIX signals intercepted by a native handler: SIGSEGV, SIGBUS, SIGILL, SIGFPE, and SIGABRT.
  • Fatal POSIX Signals (iOS): Hardware faults and abort signals captured safely without dynamic allocation: SIGSEGV, SIGBUS, SIGABRT, SIGILL, SIGTRAP, SIGFPE.
  • Swift Fatal Errors (iOS): Force-unwrap traps, assertion failures, and fatalError().
  • Objective-C Exceptions (iOS): Uncaught exceptions captured via NSSetUncaughtExceptionHandler.

پس از رسیدن رخداد به سرور دیدبان چه می‌شود؟

  1. احراز هویت و اعتبارسنجی: درخواست با استفاده از کلید پروژه (Ingest API Key) اعتبارسنجی شده و بدنه رخداد بر اساس محدودیت‌های امنیتی ارزیابی می‌شود.
  2. محاسبه اثرانگشت و دسته‌بندی ایشو (Fingerprinting): محل وقوع و فریم‌های کلیدی نرمال‌سازی شده و یک اثرانگشت یکتا تولید می‌شود تا رخدادهای با ریشه یکسان در یک ایشو (Issue) مشترک گروه‌بندی شوند.
  3. رمزگشایی و نمادگذاری (Symbolication): در صورت وجود فایل‌های مپینگ R8، نمادهای NDK یا پکیج‌های dSYM مربوط به نسخه منتشرشده، فریم‌های خام به خطوط کد منبع اصلی ترجمه می‌شوند.
  4. بروزرسانی وضعیت چرخه حیات و ارسال هشدار: در صورت وقوع اولین رخداد برای یک ایشوی حل‌شده، وضعیت آن به‌طور خودکار به بازگشته (Regressed) تغییر کرده و هشدارهای ایمیل فعال ارسال می‌شوند.