简单 php 代码跟踪调试实现

debug_backtrace:生成回溯
debug_print_backtrace:打印回溯

1. debug_backtrace ($options = DEBUG_BACKTRACE_PROVIDE_OBJECT, $limit = 0) {}

$backtrace = debug_backtrace();
var_dump($backtrace);

  

<?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;
}
} 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;
}
} 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;
}
} // 获取用户订单资料
$order_id = 1000000; $oOrder = new Order;
$order_info = $oOrder->get_order($order_id);

结果:

2.打印回溯    

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

$options :此参数是以下选项的位掩码:
$limit  :此参数可用于限制打印的堆栈帧的数目。

debug_print_backtrace();

  代码:

<?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;
}
} 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;
}
} 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);//fixme or
debug_print_backtrace(); return $message;
}
} // 获取用户订单资料
$order_id = 1000000; $oOrder = new Order;
$order_info = $oOrder->get_order($order_id);

结果:

简单 php 代码跟踪调试实现的更多相关文章

  1. __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )

    root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H        #define GLOBAL_H        ...

  2. __FILE__,__LINE__,FUNCTION__实现代码跟踪调试

    转:http://www.cnitblog.com/zouzheng/archive/2007/08/31/32691.aspx 先看下简单的初始代码:注意其编译运行后的结果. root@xuanfe ...

  3. PHP在浏览器上跟踪调试的方法以及使用ChromePhp、FirePHP的简单介绍

    之前用ThinkPHP时发现有个 trace 函数可以跟踪调试,感觉很有意思,网上搜索了下类似的东西,发现了 ChromePhp ,以前没想过这样来调试 PHP 程序,感觉非常方便,很有用. Thin ...

  4. Linux内核分析-使用gdb跟踪调试内核从start_kernel到init进程启动

    姓名:江军 ID:fuchen1994 实验日期:2016.3.13 实验指导 使用实验楼的虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-3.18.6/a ...

  5. 跟踪调试Linux内核的启动过程

    跟踪调试Linux内核的启动过程---使用gdb 符钰婧 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/UST ...

  6. linux strace-跟踪进程的系统调用或是信号产生情况,lstrace-跟踪己丑年调用库函数情况,进程跟踪调试命令

    本工具可以用来做大多数排除,比如mount一个NFS,很慢,找不出原因,我们可以使用strace命令来跟中mount这个经常所有的调用过程. strace 命令是一种强大的工具,它能够显示所有由用户空 ...

  7. PHP打印跟踪调试信息

    对于大部分编译型语言来说,比如 C . Java . C# ,我们都能很方便地进行断点调试,但是 PHP 则必须安装 XDebug 并且在编辑器中进行复杂的配置才能实现断点调试的能力.不过,如果只是简 ...

  8. ANE原生代码的调试(安卓)

    忙了一天终于有空继续这篇教程了. ANE的原生代码的调试其实在Adobe的官网有介绍的,但是同样很含糊,我摸索了一段时间现在记录下我的心得. 首先你得安装Eclipse,然后你得启动Eclipse 然 ...

  9. 跟踪调试JDK源码时遇到的问题及解决方法

    目录 问题描述 解决思路 在IntelliJ IDEA中调试JDK源码 在eclipse中调试JDK源码 总结 问题描述 最近在研究MyBatis的缓存机制,需要回顾一下HashMap的实现原理.于是 ...

随机推荐

  1. asp.net mvc前台显示带htm标签的解决办法(Razor —@Html.Raw())

    数据是从后台富文本编辑后丢在数据库后取出的,不加Html.Raw(),前台就会把Html标签一同显示

  2. 基础知识:if判断、while循环、for循环

    今日学习内容                   1.if 判断(流程控制的一种) 写重复的代码是程序员最不耻的行为,所以我们需要while循环和for循环 ,^_^!                 ...

  3. 如何简单的构建Android?

    原文链接:https://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/   过去的几个月中,在Tuenti上与同行例 ...

  4. nginx+uwsgi部署django项目

    1.django项目部署前需要生成admin的静态资源文件 (1)生成admin的静态资源文件 # 关闭debug模型 DEBUG = False # 允许所有域名访问 ALLOWED_HOSTS = ...

  5. 太嚣张了!他竟用Python绕过了“验证码”

    在web页面中,经常会遇到验证码,这对于我这么一个热爱web自动化测试人员,就变成了一件头疼的事.于是千方百计找各种资源得到破解简单的验证码方法. 识别验证码 大致分如下几个步骤: 1.获取验证码图片 ...

  6. C# 获取当前服务器运行程序的根目录,获取当前运行程序物理路径

    C# 获取当前服务器运行程序的根目录,获取当前运行程序物理路径 string tmpRootDir = AppDomain.CurrentDomain.BaseDirectory;//获得当前服务器程 ...

  7. redis -hash(哈希.对象)

    hash 用于储存对象,对象的结构为属性.值 值的类型string 增加.修改: 设置单个属性: hset 键 field 值 例如: 设置键 user 的属性name 为 python hset u ...

  8. .net c#将数据库数据对象转换为实体值对象

    using System; using System.Data; namespace Sunlib { public static class DataHelper { //将数据库数据对象转换为实体 ...

  9. Oracle中用序列和触发器实现ID自增

    在设计数据库的时候,Oracle中没有类似SQL Server中系统自动分配ID作为主键的功能,这时Oracle可以通过“序列”和“触发器”来实现ID自动增加的功能. 1.创建序列Sequence c ...

  10. EF Core使用笔记(基于MySql数据库)

    一.什么是EF Entity Framework 是适用于.NET 的对象关系映射程序 (O/RM). 二.比较 EF Core 和 EF6 1.Entity Framework 6 Entity F ...