>  기사  >  백엔드 개발  >  PHP는 debug_backtrace 메소드를 사용하여 코드 호출을 추적합니다.

PHP는 debug_backtrace 메소드를 사용하여 코드 호출을 추적합니다.

jacklove
jacklove원래의
2018-06-15 17:30:001474검색

예를 들어 개발 과정에서 다른 사람이 개발한 코드를 수정하거나 문제가 있는 코드를 디버깅하려면 코드 프로세스를 단계별로 추적하여 문제가 있는 부분을 찾아 수정해야 합니다. 특정 코드가 어떤 메소드를 호출했는지 알아내고, 처음 호출된 위치(호출된 파일, 행 수, 매개변수 등 포함)로 돌아갈 수 있는 메소드가 있는 경우 문제 위치를 쉽게 찾을 수 있습니다.

php의 debug_backtrace 메소드는 코드 호출을 추적하여 코드 디버깅을 용이하게 할 수 있습니다.

debug_backtrace 메소드 설명

역추적 생성(backtrace)

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

Parameters

options

DEBUG_BACKTRACE_PROVIDE_OBJECT
여부 "객체"” 색인을 작성합니다.

DEBUG_BACKTRACE_IGNORE_ARGS
모든 함수/메서드 매개변수를 포함하여 "args"의 인덱스를 무시할지 여부는 메모리 오버헤드를 절약할 수 있습니다.

limit
이 매개변수는 반환되는 스택 프레임 수를 제한하는 데 사용할 수 있습니다. 기본값은 (limit=0)이며 모든 스택 프레임을 반환합니다.


반환 값

많은 연관 배열을 포함하는 배열을 반환합니다. 가능한 반환 요소:

名字         类型    说明function    string  当前的函数名,参见: __FUNCTION__。
line        integer 当前的行号。参见: __LINE__。
file        string  当前的文件名。参见: __FILE__。class       string  当前 class 的名称。参见 __CLASS__object      object  当前的 object。
type        string  当前调用的类型。如果是一个方法,会返回 "->"。如果是一个静态方法,会返回 "::"。 如果是一个函数调用,则返回空。
args        array   如果在一个函数里,这会列出函数的参数。 如果是在一个被包含的文件里,会列出包含的文件名。

Instance

주문의 사용자 정보와 사용자 정보를 가져옵니다. >user->message를 입력하면 최종적으로 정렬된 정보가 반환됩니다.

디버깅 중에 메시지의 데이터가 올바르지 않다는 것을 발견했다고 가정하면 메시지의 debug_backtrace 메서드를 사용하여 호출 프로세스와 매개 변수를 보고 문제를 일으키는 단계를 확인할 수 있습니다.

DEBUG_BACKTRACE_IGNORE_ARGS를 사용하면 args(메소드 호출의 매개변수)가 무시됩니다.

index.php

<?phprequire &#39;order.php&#39;;// 获取用户订单资料$order_id = 1000000;$oOrder = new Order;$order_info = $oOrder->get_order($order_id);?>


order.php

<?phprequire &#39;user.php&#39;;// 订单资料class Order{
    // 获取订单资料
    function get_order($order_id){
        $user_id = 1001;        // 获取用户资料
        $oUser = new User;        $user_info = $oUser->get_user($user_id);        // 订单资料
        $order_info = array(            &#39;order_id&#39; => $order_id,            &#39;order_name&#39; => &#39;my order&#39;,            &#39;user_info&#39; => $user_info,
        );        return $order_info;
    }
}?>


user.php

<?phprequire &#39;message.php&#39;;// 用户资料class User{
    // 获取用户资料
    function get_user($user_id){
        // 获取用户讯息
        $oMessage = new Message;        $user_message = $oMessage->get_message($user_id);        $user_info = array(                &#39;user_id&#39; => $user_id,                &#39;name&#39; => &#39;fdipzone&#39;,                &#39;message&#39; => $user_message
        );        return $user_info;
    }
}?>


message.php

<?php// 用户讯息class Message{
    // 获取用户讯息
    function get_message($user_id){
        $message = array(            array(&#39;id&#39;=>1, &#39;title&#39;=>&#39;message1&#39;),            array(&#39;id&#39;=>2, &#39;title&#39;=>&#39;message2&#39;),
        );        // 加入跟踪调试
        $backtrace = debug_backtrace();
        var_dump($backtrace);        return $message;
    }
}?>

run index.php, 출력은 호출 프로세스가

1.index.php

라인 8

클래스 순서
- unftunction get_order
Args int 10000000 인 것을 알 수 있습니다. 2 . order.php
line 14
class User

function get_user

args int 1001

3.user.php
line 12
class Message

function get_message

args int 1001

이 문서에서는 debug_backtrace 메서드를 사용하여 추적하는 방법을 설명합니다. 코드 호출 업데이트 관련 내용을 더 보려면 PHP 중국어 웹사이트를 참고하세요.

관련 권장 사항:

터미널에서 SQL을 실행하고 결과를 파일에 쓰는 Mysql 메서드

php는 토큰 버킷 알고리즘을 사용하여 redis

Redis 마스터-슬레이브 기반 흐름 제어를 구현합니다. 동기화, 읽기-쓰기 분리 관련 작업 설정

위 내용은 PHP는 debug_backtrace 메소드를 사용하여 코드 호출을 추적합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.