예를 들어 개발 과정에서 다른 사람이 개발한 코드를 수정하거나 문제가 있는 코드를 디버깅하려면 코드 프로세스를 단계별로 추적하여 문제가 있는 부분을 찾아 수정해야 합니다. 특정 코드가 어떤 메소드를 호출했는지 알아내고, 처음 호출된 위치(호출된 파일, 행 수, 매개변수 등 포함)로 돌아갈 수 있는 메소드가 있는 경우 문제 위치를 쉽게 찾을 수 있습니다.
php의 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 如果在一个函数里,这会列出函数的参数。 如果是在一个被包含的文件里,会列出包含的文件名。
주문의 사용자 정보와 사용자 정보를 가져옵니다. >user->message를 입력하면 최종적으로 정렬된 정보가 반환됩니다.
디버깅 중에 메시지의 데이터가 올바르지 않다는 것을 발견했다고 가정하면 메시지의 debug_backtrace 메서드를 사용하여 호출 프로세스와 매개 변수를 보고 문제를 일으키는 단계를 확인할 수 있습니다.
DEBUG_BACKTRACE_IGNORE_ARGS를 사용하면 args(메소드 호출의 매개변수)가 무시됩니다.
index.php
<?phprequire 'order.php';// 获取用户订单资料$order_id = 1000000;$oOrder = new Order;$order_info = $oOrder->get_order($order_id);?>
order.php
<?phprequire 'user.php';// 订单资料class Order{ // 获取订单资料 function get_order($order_id){ $user_id = 1001; // 获取用户资料 $oUser = new User; $user_info = $oUser->get_user($user_id); // 订单资料 $order_info = array( 'order_id' => $order_id, 'order_name' => 'my order', 'user_info' => $user_info, ); return $order_info; } }?>
user.php
<?phprequire 'message.php';// 用户资料class User{ // 获取用户资料 function get_user($user_id){ // 获取用户讯息 $oMessage = new Message; $user_message = $oMessage->get_message($user_id); $user_info = array( 'user_id' => $user_id, 'name' => 'fdipzone', 'message' => $user_message ); return $user_info; } }?>
message.php
<?php// 用户讯息class Message{ // 获取用户讯息 function get_message($user_id){ $message = array( array('id'=>1, 'title'=>'message1'), array('id'=>2, 'title'=>'message2'), ); // 加入跟踪调试 $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
args int 1001
3.user.php
line 12
class Message
args int 1001
이 문서에서는 debug_backtrace 메서드를 사용하여 추적하는 방법을 설명합니다. 코드 호출 업데이트 관련 내용을 더 보려면 PHP 중국어 웹사이트를 참고하세요.
관련 권장 사항:
Redis 마스터-슬레이브 기반 흐름 제어를 구현합니다. 동기화, 읽기-쓰기 분리 관련 작업 설정
위 내용은 PHP는 debug_backtrace 메소드를 사용하여 코드 호출을 추적합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!