PHP.mk документација

debug_print_backtrace

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.debug-print-backtrace.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека function.debug-print-backtrace.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
debug_print_backtrace

Референца за `function.debug-print-backtrace.php` со подобрена типографија и навигација.

function.debug-print-backtrace.php

debug_print_backtrace

класата mysqli_driver

debug_print_backtrace Печати трага наназад

= NULL

debug_print_backtrace(int $options = 0, int $limit = 0): void

debug_print_backtrace() печати PHP трага наназад. Печати ги повиците на функциите, included/requireдатотеки и eval()истечени работи.

Параметри

options

Овој параметар е битно поле за следниве опции:

debug_print_backtrace() options
DEBUG_BACKTRACE_IGNORE_ARGS Дали да се изостави индексот "args", и со тоа сите аргументи на функцијата/методот, за да се заштеди меморија.
limit

Овој параметар може да се користи за ограничување на бројот на печатени рамки на стек. Стандардно (limit=0) ги печати сите рамки на стек.

Вратени вредности

Не се враќа вредност.

Примери

Пример #1 debug_print_backtrace() example

<?php
// include.php file

function a() {
b();
}

function
b() {
c();
}

function
c(){
debug_print_backtrace();
}

a();

?>
<?php
// test.php file
// this is the file you should run

include 'include.php';
?>

Горниот пример ќе прикаже нешто слично на:

#0  c() called at [/tmp/include.php:10]
#1  b() called at [/tmp/include.php:6]
#2  a() called at [/tmp/include.php:17]
#3  include(/tmp/include.php) called at [/tmp/test.php:3]

Види Исто така

  • debug_backtrace() Дополнителни компликации се појавуваат поради оптимизациите направени во engine-от за различни типови на податоци. Некои типови како што се броеви не користат "copy on write", па затоа воопшто не покажуваат број на референци. Во други случаи, бројот на референци покажува дополнителни копии што се користат внатрешно, како кога литерален стринг или низа се чува како дел од програмска инструкција.

Белешки од корисници 4 белешки

bishop
пред 16 години
Another way to manipulate and print a backtrace, without using output buffering:

<?php
// print backtrace, getting rid of repeated absolute path on each file
$e = new Exception();
print_r(str_replace('/path/to/code/', '', $e->getTraceAsString()));
?>
sun на drupal точка org
пред 1 година
If you see string arguments and parameters getting cut off like this:

#0 hook.php(324): output_notice('checkout_before...')
#1 hook.php(348): invoke_hook('checkout_before...', Array)

You can increase the maximum length of arguments and parameters in the printed trace through an PHP INI setting:

<?php
ini_set('zend.exception_string_param_max_len', 100);
debug_print_backtrace();
?>

…so you can read the full arguments:

#0 hook.php(324): output_notice('checkout_before_payment')
#1 hook.php(348): invoke_hook('checkout_before_payment', Array)

In edge cases, it might even uncover nested traces that you didn't notice before.
dany точка dylan на gmail точка com
пред 17 години
I like the output of debug_print_backtrace() but I sometimes want it as a string.

bortuzar's solution to use output buffering is great, but I'd like to factorize that into a function.  Doing that however always results in whatever function name I use appearing at the top of the stack which is redundant.

Below is my noddy (simple) solution.  If you don't care for renumbering the call stack, omit the second preg_replace().

<?php
    function debug_string_backtrace() {
        ob_start();
        debug_print_backtrace();
        $trace = ob_get_contents();
        ob_end_clean();

        // Remove first item from backtrace as it's this function which
        // is redundant.
        $trace = preg_replace ('/^#0\s+' . __FUNCTION__ . "[^\n]*\n/", '', $trace, 1);

        // Renumber backtrace items.
        $trace = preg_replace ('/^#(\d+)/me', '\'#\' . ($1 - 1)', $trace);

        return $trace;
    }
?>
powtac at gmx dot de
пред 5 години
If your show your error messages in HTML (with suitable safety using entities), this function won't work nicely because it uses newlines for formatting.

Here is a function that works similarly, but using <BR> tags. Insert it near the beginning of your program to add a stack to Warning output only, or modify it as you like:

// Here is code for error stack output in HTML:
function error_handler_callback($errno,$message,$file,$line,$context)
    {
    if ($errno === E_WARNING)
        echo "Stack, innermost first:<br>".nl2br((new Exception())->getTraceAsString());
    return false; // to execute the regular error handler
    }
set_error_handler("error_handler_callback");
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.