چاپ ردیابی پشته (debug_print_backtrace)
گاهی کدت خطا می دهد و گیج می شوی. «ردیابی پشته (Stack Trace)» مسیر اجرای توابع را نشان می دهد. تابع debug_print_backtrace() همین مسیر را چاپ می کند. پس راحت منبع مشکل را پیدا می کنی.
تعریف ساده و کاربرد
debug_print_backtrace() مسیر اجرا تا همین خط را چاپ می کند. یعنی می گوید از کدام تابع به کدام تابع آمدیم. این خروجی برای اشکال زدایی مفید است. «اشکال زدایی (Debugging)» یعنی پیدا کردن دلیل خطا.
نحو (Syntax) و پارامترها
فرم کلی تابع:
debug_print_backtrace(options, limit);
options: می تواند بیت ماسک باشد. مقدار DEBUG_BACKTRACE_IGNORE_ARGS آرگومان های توابع را حذف می کند. این کار حافظه را کم تر مصرف می کند.
limit: تعداد فریم های پشته را محدود می کند. مقدار 0 یعنی همه را چاپ کن.
مثال عملی: چاپ مسیر فراخوانی
در این مثال سه تابع پشت سرهم صدا می شوند. بعد، مسیر کامل چاپ می شود.
<?php
function a($txt) {
b("Glenn");
}
function b($txt) {
c("Cleveland");
}
function c($txt) {
debug_print_backtrace();
}
a("Peter");
?>
نکته: خروجی شامل نام فایل، شماره خط، و توابع صدا شده است. مثل نقشه راه برای برگشت به منبع خطا.
تنظیم خروجی با گزینه ها
اگر آرگومان ها مهم نیستند، از DEBUG_BACKTRACE_IGNORE_ARGS استفاده کن. اگر لیست خیلی بلند است، با limit کوتاهش کن. این کار مثل فیلتر جست وجوی گوشی است.
جزئیات فنی و نسخه ها
- مقدار بازگشتی: ندارد.
- نسخه PHP: از 5.0 به بعد.
- تغییرات: پارامتر
optionsاز 5.3.6 اضافه شد. پارامترlimitاز 5.4 اضافه شد.
پیوندهای مفید
راهنمای خطاهای PHP را هم ببین: آموزش ردیابی پشته. برای ادامه اشکال زدایی، این صفحه آپلود فایل هم مثال های خوبی دارد.
جمع بندی سریع
- برای اشکال زدایی، مسیر اجرا را چاپ کن.
- با
optionsآرگومان ها را پنهان کن. - با
limitخروجی را کوتاه کن. - خروجی مثل نقشه راه است.