معرفی دیدبان
پلتفرم گزارش کرش و مانیتورینگ متمرکز بر معماری بومی موبایل برای اندروید و iOS.
دیدبان چیست؟
دیدبان (Didban) یک سیستم گزارش خرابی و رصد سلامت اپلیکیشنهای موبایل است که از پایه با اولویت پایداری، عملکرد روان، ایمنی پروسس و حفظ حریم خصوصی کاربران طراحی شده است.
دیدبان برای بازیابی رخدادهای مهلک، ثبت محلی و ارسال در اجرای بعدی را بهکار میگیرد. محدودیتهای ایمنی هندلر نیتیو با مسیرهای JVM و زمان اجرای سطح بالا یکسان نیستند.
دیدبان چه مسائلی را حل میکند؟
- ایمنی پروسس در زمان کرش: اجرای کدهای سنگین، ارتباطات شبکه یا تخصیص حافظه در زمان وقوع استثناهای مهلک میتواند باعث قطع ناقص پروسس و از دست رفتن گزارش خطا شود. دیدبان دادهها را با استفاده از بافرهای از پیشتخصیصیافته روی دیسک ذخیره میکند.
- تحلیل هوشمند فریمهای استک (Stack Intelligence): تفکیک خودکار کدهای اختصاصی پروژه (App Frames) از کدهای فریمورک سیستمعامل و کدهای ساختهشده توسط کامپایلر (مانند کدهای مصنوعی R8) و نمایش «محل احتمالی بررسی» (Likely Investigation Point).
- پشتیبانی همزمان از کدهای سطح بالا و نیتیو: ثبت یکپارچه استثناهای JVM، فریزهای رابط کاربری (ANR)، کدهای نیتیو C/C++ در اندروید NDK، و خطاهای مهلک Swift و Objective-C در iOS.
- عدم عددسازی در آمار سلامت (Truthful Metrics): ارائه نرخ واقعی سشنهای بدون کرش بر اساس تلهمتری واقعی سشنهای فعال در پیشزمینه. بدون سشنهای حدسی یا آمارهای ساختگی.
پلتفرمهای پشتیبانیشده
| پلتفرم | حداقل نسخه | زبانهای پشتیبانیشده | وضعیت فعلی توزیع |
|---|---|---|---|
| Android | Android 6.0+ (API 23+) | Kotlin, Java, C/C++ (NDK) | Early Access (Local / Project Dependency) |
| iOS | iOS 15.0+ | Swift, Objective-C, C | Swift 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, andSIGABRT. - 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.
پس از رسیدن رخداد به سرور دیدبان چه میشود؟
- احراز هویت و اعتبارسنجی: درخواست با استفاده از کلید پروژه (Ingest API Key) اعتبارسنجی شده و بدنه رخداد بر اساس محدودیتهای امنیتی ارزیابی میشود.
- محاسبه اثرانگشت و دستهبندی ایشو (Fingerprinting): محل وقوع و فریمهای کلیدی نرمالسازی شده و یک اثرانگشت یکتا تولید میشود تا رخدادهای با ریشه یکسان در یک ایشو (Issue) مشترک گروهبندی شوند.
- رمزگشایی و نمادگذاری (Symbolication): در صورت وجود فایلهای مپینگ R8، نمادهای NDK یا پکیجهای dSYM مربوط به نسخه منتشرشده، فریمهای خام به خطوط کد منبع اصلی ترجمه میشوند.
- بروزرسانی وضعیت چرخه حیات و ارسال هشدار: در صورت وقوع اولین رخداد برای یک ایشوی حلشده، وضعیت آن بهطور خودکار به بازگشته (Regressed) تغییر کرده و هشدارهای ایمیل فعال ارسال میشوند.