Mobil tətbiqlərin peşəkar debuginqi və diaqnostikası mobil inkişaf üçün əsas bacarıqdır, kodda səhvləri tapmağa və düzəltməyə imkan verir. JetBrains Developer Ecosystem (2024)-ə görə, tərtibatçılar iş vaxtının 30%-ə qədərini kodun debuginqinə sərf edirlər. IT Sectr debuginq alətlərindən düzgün istifadə etməklə səhv axtarış vaxtını 40% azaldan öz diaqnostika təcrübələrini inkişaf etdirmişdir.
Əsas məqamlar
Mobil tətbiqlər iki əsas konfiqurasiyada qurulur: Debug və Release. Debug qurması debug simvollarını ehtiva edir, kodu optimallaşdırmır və müvəqqəti imzadan istifadə edir — bu, breakpoint-lər qoymağa, dəyişənləri yoxlamağa və kodu addım-addım icra etməyə imkan verir.
Mobil inkişaf üçün Release qurması App Store və Google Play üçün son versiyadır. Release kodu optimallaşdırır, lazımsız simvolları və jurnalları silir və tətbiqi istehsal sertifikatı ilə imzalayır. Release-də debuginq mümkün deyil — səhv yalnız Release-də təkrarlanırsa, Crashlytics və ya digər çökmə reportyorları lazımdır.
Mobil tətbiqlər üçün düzgün strategiya: inkişaf üçün Debug, nəşrdən əvvəl test üçün Release. IT Sectr release-dən 2-3 gün əvvəl test cihazlarında Release qurmasını işə salmağı tövsiyə edir ki, Debug rejimində görünməyən problemlər (məsələn, kod gizlətmə və ya ProGuard/R8 səhvləri) aşkar edilsin.
Debuggable=false AndroidManifest-də Release üçün məcburi parametrdir. iOS Debug və Release Xcode-da qurma sxemi ilə fərqlənir — Debug Debug executable daxil edir, Release etmir. iOS-da həmçinin TestFlight (çökmə hesabatları ilə) və App Store konfiqurasiyası var.
Android Studio Android platformasında mobil tətbiqləri debug və diaqnoz etmək üçün tam alətlər dəsti təqdim edir. Logcat Android sistem jurnalı konsoludur, jurnallara baxmaq üçün əsas alətdir, səviyyəyə (Verbose, Debug, Info, Warn, Error), prosesə və teqə görə filtrilənə bilər.
Logcat cihaz və ya emulyatordakı bütün proseslərin jurnallarını göstərir. Hər jurnalın prioritet səviyyəsi, teqi və mesajı var — debug mesajları üçün Log.d(TAG, message), səhvlər üçün Log.e istifadə edin. Teqə görə filtrləmə minlərlə sistem mesajı arasında öz jurnallarınızı tapmağın ən yaxşı yoludur.
Android-də mobil inkişafda jurnal çıxışı nümunəsi:
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate started");
try {
initComponents();
Log.i(TAG, "Components initialized successfully");
} catch (Exception e) {
Log.e(TAG, "Failed to init components", e);
}
}
Layout Inspector — Android üçün vizual UI debugeri, View iyerarxiyasını, hər elementin atributlarını və ekrandakı mövqeyini göstərir. İşləyən tətbiqdə layout parametrlərini, padding, margin, görünmə və mətn ölçülərini yoxlamağa imkan verir.
Database Inspector — birbaşa Android Studio-da SQLite verilənlər bazalarına baxmaq və redaktə etmək, bütün cədvəllərin məzmununu göstərmək, SQL sorğularını icra etmək və real vaxtda verilənləri dəyişdirmək imkanı verir — Room sorğularını və ContentProvider-ı debug etmək üçün əvəzolunmaz alət.
Network Inspector — tətbiqin bütün HTTP sorğularını izləyir, URL, başlıqlar, sorğu və cavab gövdəsi, icra müddəti və status kodunu göstərir. REST API-ni debug etməyə, serializasiyanın düzgünlüyünü yoxlamağa və yavaş sorğuları aşkar etməyə kömək edir.
Android-də mobil tətbiqlərin hərtərəfli debuginqi və diaqnostikası bütün sadalanan alətlərdə bacarıq tələb edir. Android Studio onları daha çox səmərəlilik üçün tək IDE-də birləşdirir.
Xcode iOS-da mobil tətbiqləri debug və diaqnoz etmək üçün oxşar alətlər dəsti təqdim edir. Console iOS-da Logcat-in ekvivalentidir, kateqoriya və səviyyəyə (OSLogType) görə qruplaşdırılmış sistem və tətbiq jurnallarını göstərir.
Memory Graph Debugger retain cycle-ları və yaddaş sızmalarını aşkar etmək üçün vizual alətdir, istinadları ilə birlikdə yaddaşdakı bütün obyektlərin qrafikini göstərir. Qırmızı düyünlər sızmaları göstərir — azad edilməli olan, lakin hələ də yaddaşda olan obyektlər.
Memory Graph-dan istifadə: tətbiqi işə salın, Xcode-da Debug Memory Graph düyməsini klikləyin, bir obyekt seçin və onun gələn istinadlarını yoxlayın. Retain cycle dairəvi asılılıq kimi görünür: A obyekti B obyektini saxlayır, B obyekti A obyektini saxlayır. Həll yolu closure-larda weak və ya unowned istinadlardan istifadə etməkdir.
View Hierarchy Debugger iOS-da Layout Inspector-un ekvivalentidir, ekrandakı bütün UIView-lərin iyerarxiyası, məhdudiyyətləri və atributları ilə 3D vizuallaşdırmasını göstərir. İstənilən elementi seçib onun mövqeyini, rəngini, ölçüsünü və layout məhdudiyyətlərini görməyə imkan verir.
Heap Dump bütün tətbiq yaddaşının anlıq görüntüsüdür, təhlili azad edilməyən obyektləri tapmağa və hər sinfin ümumi yaddaş istifadəsini qiymətləndirməyə kömək edir. Xcode-da Heap Dump Debug Navigator-da Memory Report vasitəsilə mövcuddur.
LLDB C, Objective-C və Swift tətbiqləri üçün aşağı səviyyəli debugerdir, breakpoint-lər, watchpoint-lər, assembler dump və dinamik dəyişən dəyişikliyini dəstəkləyir. LLDB-də po (print object) əmri yaddaşdakı istənilən obyektin təsvirini çıxarır.
Watchpoint dəyişənin dəyəri dəyişdikdə tetiklenən dayanma nöqtəsidir, obyekt sahəsinin dəyərini kimin və nə vaxt dəyişdirdiyini izləmək üçün faydalıdır. Müəyyən sətirdə tetiklenən breakpoint-dən fərqli olaraq, watchpoint hər hansı yaddaş dəyişikliyində tetiklenir.
iOS-da peşəkar debuginq və diaqnostika Xcode ilə təcrübə və yaddaş idarəetməsini anlama tələb edir. Apple hər debuginq aləti üçün tam sənədləşmə təqdim edir.
Proksi alətləri mobil tətbiqlərdə şəbəkə problemlərini diaqnoz etmək üçün vacibdir. Charles Proxy mobil inkişaf üçün ən məşhur HTTP proksidir, tətbiq və server arasında sorğuları ələ keçirməyə, görməyə və dəyişdirməyə imkan verir.
Charles Proxy vasitəçi kimi işləyir: cihazı Charles-dan proksi kimi istifadə etmək üçün konfiqurasiya edirsiniz (adətən kompüterin IP-si, port 8888). Charles bütün HTTP və HTTPS sorğularını başlıqları, gövdəsi, kukiləri və icra müddətini görmək imkanı ilə göstərir. SSL Proxying analiz üçün HTTPS trafikinin şifrəsini açmağa imkan verir.
Charles imkanları: Breakpoints (redaktə üçün sorğunu dayandırmaq), Rewrite (avtomatik sorğu dəyişikliyi), Map Local (cavabı yerli faylla əvəz etmək). Map Local real API olmadan test etmək üçün əvəzolunmazdır — server cavabı əvəzinə əvvəlcədən hazırlanmış JSON qaytarırsınız.
Proxyman daha təmiz interfeysi, daha yaxşı M1 və M2 dəstəyi və məxfilik qorunması ilə macOS üçün Charles-ın müasir alternatividir. Eyni funksiyaları dəstəkləyir: ələ keçirmə, SSL proksi, sorğu redaktəsi və avtomatik trafik dəyişikliyi üçün skriptlər.
Wireshark dərin şəbəkə diaqnostikası üçün peşəkar trafik analizatorudur, bütün OSI təbəqələrini analiz edir: TCP, DNS, TLS əl sıxması, ICMP. Yavaş bağlantıları, DNS problemlərini və aşağı səviyyəli şəbəkə səhvlərini diaqnoz etmək üçün istifadə olunur.
Stetho Chrome brauzeri vasitəsilə Android tətbiqlərini debug etmək üçün Facebook kitabxanasıdır, Chrome DevTools vasitəsilə verilənlər bazasına, şəbəkə sorğularına, View Hierarchy və Shared Preferences-ə baxmağa imkan verir. Flipper iOS dəstəyi və plagin arxitekturası ilə Stetho-nun varisidir.
API müştəriləri tətbiqin özünü işə salmadan mobil tətbiqlərin backend-ini debug və diaqnoz etmək üçün istifadə olunur. Postman kolleksiyaları, testləri və avtomatlaşdırması ilə ən məşhur API müştərisidir, GET, POST, PUT, DELETE sorğuları göndərməyə və başlıqları, kukiləri və mühit dəyişənlərini idarə etməyə imkan verir.
Insomnia daha sürətli interfeysi, daxili GraphQL dəstəyi və daha yaxşı kolleksiya təşkili ilə Postman-ın yüngül açıq mənbə alternatividir. Plaginləri dəstəkləyir: mövzular, ixrac, müxtəlif dillərdə kod yaradılması.
Httpie oxunaqlı çıxışı olan komanda sətri HTTP müştərisidir, terminalda birbaşa rəngli JSON cavabı, başlıqları və statusu göstərir. GUI tətbiqi açmadan sürətli API yoxlamaları üçün uyğundur.
Httpie istifadə nümunəsi:
http POST https://api.example.com/v1/users \
"Authorization: Bearer token123" \
name="John" email="john@example.com"
IT Sectr aşağıdakı kombinasiyanı tövsiyə edir: API analizi və sənədləşməsi üçün Postman + sürətli yoxlamalar üçün Httpie. Swagger və ya OpenAPI spesifikasiyasından Postman kolleksiyası idxal edin — bu, test edilən endpoint-lərin server sənədləşməsinə uyğun olmasını təmin edir.
| Alət | Platforma | Debug növü | Pulsuz | Ən yaxşı istifadə |
|---|---|---|---|---|
| Logcat | Android | Jurnallaşdırma | + | Tətbiq və sistem jurnallarına baxmaq |
| Layout Inspector | Android | UI/View | + | View iyerarxiyası və atributlarını yoxlamaq |
| Memory Graph | iOS | Yaddaş | + | Yaddaş sızması diaqnostikası |
| View Hierarchy | iOS | UI/View | + | 3D UIView vizuallaşdırması |
| Charles Proxy | iOS/Android | Şəbəkə | 30 günlük sınaq | HTTP/HTTPS trafikinin ələ keçirilməsi |
| Proxyman | iOS/Android | Şəbəkə | + (məhdud) | macOS üçün müasir HTTP proksi |
| Wireshark | Bütün platformalar | Şəbəkə (dərin) | + | Bütün OSI təbəqələrinin analizi |
| Postman | Bütün platformalar | API | + | REST/GraphQL API testi |
| Insomnia | Bütün platformalar | API | + | GraphQL ilə Postman alternativi |
| LLDB | iOS/macOS | Aşağı səviyyə | + | Addım-addım debuginq, assembler |
Tez-tez verilən suallar
Debug qurması debug simvollarını ehtiva edir, kodu optimallaşdırmır və müvəqqəti imzadan istifadə edir. Release qurması kodu optimallaşdırır, jurnalları silir, gizlədir və istehsal sertifikatı ilə imzalayır. Debug USB və ya emulyator vasitəsilə, Release — App Store və ya Google Play vasitəsilə quraşdırılır.
Android Studio Memory Profiler-dən istifadə edin — ayrılmış və azad edilmiş obyektləri və GC hadisələrini göstərir. Heap Dump götürün və azad edilməyən obyektləri analiz edin. finish()-dən sonra yaddaşda qalan Activity və Fragment nümunələrini axtarın. LeakCanary istifadə edin — kitabxana avtomatik olaraq sızmaları aşkar edir.
Kompüterdə: Charles-da SSL Proxying-i aktivləşdirin (Proxy → SSL Proxying Settings). Cihazda: Charles CA sertifikatını (chls.pro/ssl) quraşdırın və parametrlərdə ona etibar edin. iOS 13+-də General → About → Certificate Trust Settings-də sertifikat etibarını aktivləşdirin. Android 7+-də network_security_config.xml konfiqurasiyası tələb olunur.
Breakpoint kodun müəyyən sətirində icranı dayandırır. Watchpoint dəyişənin dəyəri dəyişdikdə icranı dayandırır. Breakpoint hər dəfə sətirə çatdıqda tetiklenir, watchpoint izlənilən yaddaşdakı hər hansı dəyişiklikdə tetiklenir. Watchpoint gözlənilməz sahə dəyişikliklərini tapmaq üçün faydalıdır.
Apollo DevTools (brauzer uzantısı) və ya GraphQL dəstəyi ilə Insomnia istifadə edin. Charles və Proxyman GraphQL sorğularını adi HTTP POST kimi ələ keçirir — sorğuları, dəyişənləri və cavabları görə bilərsiniz. Ətraflı debuginq üçün — Apollo Client Developer Tools.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.