Кіріспе

Бағдарлама орындалу кезінде стек фреймдер туралы есеп есептеуде стек ізбеталуы (стек бактрейсі немесе стек трасбекі деп те аталады) – бағдарлама орындалу кезінде белгілі бір сәттегі белсенді стек фреймдер туралы ақпарат. Бағдарлама іске қосылғанда, жад көбінесе екі орынға динамикалық түрде бөлінеді: стек және үйінді. Жады үнемі стекке бөлінеді, бірақ үйіндіге емес, осылайша олардың аттарын көрсетеді. Стек – бағдарламалау құрылымының да бір түрі, сондықтан оны ажырату үшін бұл стек бағдарламаның функция шақыру стегі деп аталады. Техникалық тұрғыдан алғанда, стекке жад блогы бөлінгеннен кейін оны алып тастау қиын, себебі оған дейін бөлінген басқа жад блоктары болуы мүмкін. Бағдарламада функция шақырылған сайын, шақыру стегінің үстіне белсендіру жазбасы деп аталатын жад блогы бөлінеді. Әдетте, белсендіру жазбасы функцияның аргументтері мен жергілікті айнымалыларын сақтайды. Оның құрамы мен орналасуы шақыру конвенциясымен анықталады. Бағдарламашылар стек ізбеталуын интерактивті және пост-мортем түсіндіру кезінде жиі пайдаланады. Соңғы пайдаланушылар қате хабарламасының бір бөлігі ретінде стек ізбеталуын көре алады және оны бағдарламашыға жіберуі мүмкін. Стек ізбеталуы стек ізбеталуы жасалған нүктеге дейін шақырылған ішкі функциялар тізбегін қадағалауға мүмкіндік береді. Пост-мортем жағдайында бұл сәтсіздік орын алған функцияға дейін (бірақ міндетті түрде оның себебі емес) созылады. Бір деңгейдегі шақырулар стек ізбеталуында көрсетілмейді.

Тілдік қолдау

Көптеген бағдарламалау тілдері, Java және C# тілдері сияқты, жүйелік шақырулар арқылы ағымдағы стек іздерін алуға арналған құрастырылған қолдауға ие. std::stacktrace стандартты кітапханаға std::stacktrace жазбалары үшін контейнер ретінде қосылғанша, C++23-ке дейін мұндай қолдау болмады, бірақ C++ пайдаланушылары стек іздерін (мысалы) stacktrace кітапханасы арқылы ала алады. JavaScript-те, қателер олар туындаған жерден бастап стек туралы ақпаратты қамтитын стек қасиетін сақтайды.