ردیابی پشته (debug_backtrace)
تابع «ردیابی پشته (Stack Trace)» مسیر فراخوانی ها را نشان می دهد. با debug_backtrace() می فهمیم کدام توابع تا این جا صدا زده شده اند؛ مثل دیدن مسیر برگشتی در بازی.
تعریف ساده و کاربرد
debug_backtrace() یک آرایه انجمنی برمی گرداند. هر المان اطلاعات فراخوان فعلی را دارد؛ مانند نام تابع، خط، فایل، کلاس، شیء، نوع فراخوان، و آرگومان ها. این داده ها برای باگ یابی بسیار کاربردی اند.
نمونه عملی از منبع
<?php
function a($txt) {
b("Glenn");
}
function b($txt) {
c("Cleveland");
}
function c($txt) {
var_dump(debug_backtrace());
}
a("Peter");
?>
سینتکس و پارامترها
سینتکس: debug_backtrace(options, limit). هر دو پارامتر اختیاری هستند. با limit تعداد فریم ها محدود می شود. مقدار صفر یعنی همه فریم ها.
گزینه ها (options)
DEBUG_BACKTRACE_PROVIDE_OBJECT: مقدار object را پر می کند. DEBUG_BACKTRACE_IGNORE_ARGS: آرگومان ها را حذف می کند تا حافظه حفظ شود.
آنچه در خروجی می بینیم
اجزاء ممکن: function نام تابع، line شماره خط، file نام فایل، class نام کلاس، object شیء فعلی، type نوع فراخوان (-> یا :: یا تابع)، و args آرگومان ها.
راهنمای مرحله ای دیباگ
- کد مشکوک را محاصره کن و فراخوان ها را بررسی کن.
- در نقطه مناسب،
debug_backtrace()را اجرا کن. - فریم ها را از پایین به بالا تحلیل کن.
نکته: برای کاهش نویز، از DEBUG_BACKTRACE_IGNORE_ARGS استفاده کن.
هشدار: خروجی می تواند اطلاعات حساس نشان دهد؛ در تولید چاپ نکن.
جمع بندی سریع
- مسیر فراخوان ها را شفاف می کند.
- با limit خروجی را کوچک کن.
- برای حفظ حافظه، args را حذف کن.
- خروجی را در تولید نمایش نده.