http://php.net/manual/zh/function.debug-backtrace.php

debug_backtrace

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

debug_backtrace — 产生一条回溯跟踪(backtrace)

说明

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

debug_backtrace() 产生一条 PHP 的回溯跟踪(backtrace)。

参数

options

截至 5.3.6,这个参数是以下选项的位掩码:

debug_backtrace() 选项
DEBUG_BACKTRACE_PROVIDE_OBJECT 是否填充 "object" 的索引。
DEBUG_BACKTRACE_IGNORE_ARGS 是否忽略 "args" 的索引,包括所有的 function/method 的参数,能够节省内存开销。

在 5.3.6 之前,仅仅能使用的值是 TRUE 或者 FALSE,分别等于是否设置 DEBUG_BACKTRACE_PROVIDE_OBJECT 选项。

limit

截至 5.4.0,这个参数能够用于限制返回堆栈帧的数量。 默认为 (limit=0) ,返回所有的堆栈帧。

返回值

返回一个包含众多关联数组的 array。 以为为有可能返回的元素:

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

更新日志

版本 说明
5.4.0 添加了可选的参数 limit
5.3.6 参数 provide_object 改成 options,并且增加了可选参数 DEBUG_BACKTRACE_IGNORE_ARGS
5.2.5 添加了可选参数 provide_object
5.1.1 添加了当前的 object 为可能返回的元素。

范例

Example #1 debug_backtrace() 范例

<?php
// filename: /tmp/a.php

function a_test($str)
{
    echo "\nHi: $str";
    var_dump(debug_backtrace());
}

a_test('friend');
?>

<?php
// filename: /tmp/b.php
include_once '/tmp/a.php';
?>

执行 /tmp/b.php 返回的结果类似于以下:

Hi: friend
array(2) {
[0]=>
array(4) {
["file"] => string(10) "/tmp/a.php"
["line"] => int(10)
["function"] => string(6) "a_test"
["args"]=>
array(1) {
[0] => &string(6) "friend"
}
}
[1]=>
array(4) {
["file"] => string(10) "/tmp/b.php"
["line"] => int(2)
["args"] =>
array(1) {
[0] => string(10) "/tmp/a.php"
}
["function"] => string(12) "include_once"
}
}

参见

PHP debug_backtrace() 函数打印调用处的调试信息的更多相关文章

  1. 利用backtrace和backtrace_symbols函数打印调用栈信息

    在头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈. #include <execinfo.h>  int backtrace(void * ...

  2. [Android Pro] Android studio jni中调用Log输出调试信息

    reference to : http://www.linuxidc.com/Linux/2014-02/96341.htm Android 开发中,java 可以方便的使用调试信息Log.i, Lo ...

  3. NDK开发: 打印C代码的调试信息Log

    1.引入头文件 #include <android/log.h> 2.修改Android.mk 在其中加入 LOCAL_LDLIBS+= -L$(SYSROOT)/usr/lib -llo ...

  4. Windows程序调试系列: 使用VC++生成调试信息 转

    Windows程序调试系列: 使用VC++生成调试信息 ZhangTao,zhangtao.it@gmail.com, 译自 “Generating debug information with Vi ...

  5. PHP 打印调用函数入口地址(堆栈)

    今天网站出现一个BUG,然后直接在数据库类里面写日志,看是哪条SQL出了问题,SQL语句到是找到了,但是不知道这条SQL语句来自何处,于是就想啊,如果能有一个办法,查看当前正在运行的这个方法是被哪个方 ...

  6. PHP 打印调用函数入口地址(堆栈),方便调式

    今天网站出现一个BUG,然后直接在数据库类里面写日志,看是哪条SQL出了问题,SQL语句到是找到了,但是不知道这条SQL语句来自何处,于是就想啊,如果能有一个办法,查看当前正在运行的这个方法是被哪个方 ...

  7. go 代码的调试---打印调用堆栈

    本文介绍如何打印调用堆栈进行go代码的调试. 打印堆栈使用的runtime package中的Stack()函数 func Stack(buf []byte, all bool) int Stack ...

  8. 驱动:中断【2】中断处理程序、中断上下文中处理延时及一些函数的调用规则(调IIC中断驱动有感)

    中断处理程序.中断上下文中处理延时及一些函数的调用规则(调IIC中断驱动有感)http://blog.csdn.net/samantha_sun/article/details/6790492 1,中 ...

  9. 利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载

    简述 可能大家都知道,php中有一个函数叫debug_backtrace,它可以回溯跟踪函数的调用信息,可以说是一个调试利器. 好,来复习一下 01 one(); 02 03 function one ...

随机推荐

  1. About {DynamicResource {x:Static SystemColors.ControlBrushKey}}

    from : http://blog.sina.com.cn/s/blog_749e42850100sahi.html 前提: <system:String x:Key="{Compo ...

  2. 帝国CMS当前位置中的“首页”二字如何修改

    1.帝国CMS当前位置首页那两个字在哪里可以修改吗? 2.[!--newsnav--]该处的首页链接,请问在哪儿修改? 3.导航条[!--newsnav--]默认首页为:“首页”可以更改么? 4.导航 ...

  3. 使用 MVVMLight 命令绑定

    首先,如果您希望了解更多的MVVMLight技术或希望有顺序的学习MVVMLight,请查阅目录<MVVMLight 设计模式系列使用文章>. 继上一篇文章的项目,我们实现了数据绑定到界面 ...

  4. POJ 2923 Relocation(01背包变形, 状态压缩DP)

    Q: 如何判断几件物品能否被 2 辆车一次拉走? A: DP 问题. 先 dp 求解第一辆车能够装下的最大的重量, 然后计算剩下的重量之和是否小于第二辆车的 capacity, 若小于, 这 OK. ...

  5. oracle SUM函数

    select change_type as change_type, sum(points1) as points from (select DECODE(p.change_type, , ' 兑换商 ...

  6. SecureCRT 详细使用图文教程(按步骤)

    一.安装和激活 安装 1.在http://www./softs/55471.html下载相关包激活工具,运行scrt622-x86.exe. 2.进入安装向导程序,默认下一步,直到安装完成既可以. 破 ...

  7. Day05_C操作符及二进制补码计算

    回顾:  1.数据类型  2.二进制(八进制,十六进制) --------------------------------------------------------- 计算机中不可以使用负号表示 ...

  8. UVa 568 - Just the Facts

    这道题和这几段牛代码让我见识了精简与高效.好好学习! http://blog.csdn.net/lyhvoyage/article/details/9307009

  9. font-size对展示的影响

    实例: <head>        <style type="text/css">            span{display: inline-bloc ...

  10. JavaWeb温习之防止表单重复提交

    表单重复提交主要有以下三种情况: 1. 在网络延迟的情况下让用户有时间点击多次submit按钮导致表单重复提交 2. 表单提交后用户点击[刷新]按钮导致表单重复提交 3. 用户提交表单后,点击浏览器的 ...