Sıfır olmayan çıxış kodu ilə bitən tətbiqi necə ayıqlayacaqsınız?
sobes.tech Süni İntellekt
AI-dan cavab
Tətbiqin və sistemin loglarını səhvlər və ya istisnalar üçün yoxlayacağam ki, bunlar qəza ilə nəticələnmiş ola bilər. Strukturlaşdırılmış logların (JSON, açar-dəyər) istifadəsi analizi asanlaşdırır.
Linux-da strace kimi izləmə vasitələrindən istifadə edərək, tətbiq bağlanmadan əvvəl etdiyi sistem çağırışlarını izləyəcəyəm. Bu, problemi yaradan resursları və ya əməliyyatları müəyyən etməyə kömək edəcək.
Əgər mümkünsə, tətbiqi debug rejimində (GDB, PDB və s.) addım-addım işlədərək, qəza zamanı dəyişənlərin vəziyyətini analiz edəcəyəm.
Əgər yaradılıbsa, core dump fayllarını gdb kimi vasitələrlə yoxlayacağam; bu, yığın izini və yaddaşın məzmununu əldə etməyə imkan verir.
Tətbiqin işlədiyi mühitin vəziyyətini yoxlayacağam: yaddaşın mövcudluğu, disk sahəsi, şəbəkə resursları, konfiqurasiya faylları və ətraf mühit dəyişənləri.
Tətbiqin istifadə etdiyi bütün asılılıqlar və kitabxanaların versiyalarını, tətbiqin stabil işlədiyi versiya ilə müqayisə edəcəyəm.
Mümkün olan xarici amilləri izolyasiya edərək, problemi idarə olunan test mühitində təkrarlamağa çalışacağam.
İzləmə metriklərindən (CPU, yaddaş, I/O) istifadə edərək, qəza əvvəlindəki yüklənmə və ya anomaliyaları aşkar edəcəyəm.
strace istifadə nümunəsi:
# PID 12345 olan prosesin bütün sistem çağırışlarını izləmək
strace -p 12345
# İşə salınan əmrin sistem çağırışlarını izləmək və çıxışı fayla qeyd etmək
strace -o syscalls.log ./my_app arg1 arg2
GDB ilə core dump analizi nümunəsi:
# GDB-ni icra etmək, icra edilə bilən fayl və core dump ilə
gdb ./my_app core.12345
# GDB daxilində:
# Yığın izini göstərmək
(gdb) bt
# Lokal dəyişənlərin dəyərlərini göstərmək
(gdb) info locals
# Funksiya arqumentlərinin dəyərlərini göstərmək
(gdb) info args