debug_backtrace

funkcja

Zwraca stos wywołań funkcji jako tablicę — każdy element opisuje jedną ramkę: funkcję, plik, linię i argumenty.

debug_backtrace(int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT, int $limit = 0): array

debug_backtrace zwraca tablicę ramek stosu wywołań — od najnowszego wywołania (indeks 0) do najstarszego. Każda ramka to tablica asocjacyjna z kluczami:

| Klucz | Opis | |---|---| | function | Nazwa wywoływanej funkcji/metody | | file | Plik, z którego nastąpiło wywołanie | | line | Numer linii wywołania | | class | Klasa (jeśli to metoda) | | args | Argumenty (tylko gdy DEBUG_BACKTRACE_IGNORE_ARGS nie jest ustawione) | | object | Obiekt $this (tylko gdy opcja PROVIDE_OBJECT) |

<?php
declare(strict_types=1);

function formatujBlad(): void {
    $stos = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
    foreach ($stos as $ramka) {
        $plik = $ramka['file'] ?? '(brak)';
        $linia = $ramka['line'] ?? '?';
        $funkcja = $ramka['function'];
        echo "  $funkcja() — $plik:$linia\n";
    }
}

function b(): void { formatujBlad(); }
function a(): void { b(); }

a();
// wynik (kolejność od najnowszego):
//   formatujBlad() — /skrypt.php:15
//   b() — /skrypt.php:17
//   a() — /skrypt.php:18

Parametr $options:

  • DEBUG_BACKTRACE_PROVIDE_OBJECT (domyślnie) — dołącza obiekty $this
  • DEBUG_BACKTRACE_IGNORE_ARGS — pomija argumenty (tańsze pamięciowo)

Parametr $limit ogranicza liczbę zwróconych ramek (0 = bez limitu).

debug_backtrace służy wyłącznie do diagnostyki w trakcie developmentu — nie używaj jej w kodzie produkcyjnym, gdzie mogłaby ujawnić wewnętrzną strukturę aplikacji.

📘 Naucz się w lekcji →