简单 php 代码跟踪调试实现

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

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

  1. $backtrace = debug_backtrace();
  2. var_dump($backtrace);

  

  1. <?php
  2.  
  3. // 订单资料
  4. class Order{
  5.  
  6. // 获取订单资料
  7. function get_order($order_id){
  8. $user_id = 1001;
  9. // 获取用户资料
  10. $oUser = new User;
  11. $user_info = $oUser->get_user($user_id);
  12. // 订单资料
  13. $order_info = array(
  14. 'order_id' => $order_id,
  15. 'order_name' => 'my order',
  16. 'user_info' => $user_info,
  17. );
  18. return $order_info;
  19. }
  20. }
  21.  
  22. class User{
  23. // 获取用户资料
  24. function get_user($user_id){
  25. // 获取用户讯息
  26. $oMessage = new Message;
  27. $user_message = $oMessage->get_message($user_id);
  28. $user_info = array(
  29. 'user_id' => $user_id,
  30. 'name' => 'fdipzone',
  31. 'message' => $user_message
  32. );
  33. return $user_info;
  34. }
  35. }
  36.  
  37. class Message{
  38. // 获取用户讯息
  39. function get_message($user_id){
  40. $message = array(
  41. array('id'=>1, 'title'=>'message1'),
  42. array('id'=>2, 'title'=>'message2'),
  43. );
  44. // 加入跟踪调试
  45. $backtrace = debug_backtrace();
  46. var_dump($backtrace);
  47.  
  48. return $message;
  49. }
  50. }
  51.  
  52. // 获取用户订单资料
  53. $order_id = 1000000;
  54.  
  55. $oOrder = new Order;
  56. $order_info = $oOrder->get_order($order_id);

结果:

2.打印回溯    

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

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

  1. debug_print_backtrace();

  代码:

  1. <?php
  2.  
  3. // 订单资料
  4. class Order{
  5.  
  6. // 获取订单资料
  7. function get_order($order_id){
  8. $user_id = 1001;
  9. // 获取用户资料
  10. $oUser = new User;
  11. $user_info = $oUser->get_user($user_id);
  12. // 订单资料
  13. $order_info = array(
  14. 'order_id' => $order_id,
  15. 'order_name' => 'my order',
  16. 'user_info' => $user_info,
  17. );
  18. return $order_info;
  19. }
  20. }
  21.  
  22. class User{
  23. // 获取用户资料
  24. function get_user($user_id){
  25. // 获取用户讯息
  26. $oMessage = new Message;
  27. $user_message = $oMessage->get_message($user_id);
  28. $user_info = array(
  29. 'user_id' => $user_id,
  30. 'name' => 'fdipzone',
  31. 'message' => $user_message
  32. );
  33. return $user_info;
  34. }
  35. }
  36.  
  37. class Message{
  38. // 获取用户讯息
  39. function get_message($user_id){
  40. $message = array(
  41. array('id'=>1, 'title'=>'message1'),
  42. array('id'=>2, 'title'=>'message2'),
  43. );
  44. // 加入跟踪调试
  45. //$backtrace = debug_backtrace();
  46. //var_dump($backtrace);//fixme or
  47. debug_print_backtrace();
  48.  
  49. return $message;
  50. }
  51. }
  52.  
  53. // 获取用户订单资料
  54. $order_id = 1000000;
  55.  
  56. $oOrder = new Order;
  57. $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. [C#] C# 与 Nessus 交互,动态构建扫描任务计划

    C# 与 Nessus 交互,动态构建扫描任务计划 目录 什么是 Nessus? 创建会话类 NessusSession 登录测试 创建操作类 NessusManager 操作测试 什么是 Nessu ...

  2. Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合

    Redis 小白指南(二)- 聊聊五大类型:字符串.散列.列表.集合和有序集合 引言 开篇<Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍>已经介绍了 Redis 的 ...

  3. Python查找指定文件

    在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径: import os testfiles = [] testfilepaths = [] L = len(os.p ...

  4. git 提交项目代码到码云步骤 以及出现错误解决办法

    git initgit remote add origin 项目地址git add .git commit -m "注释"git push origin master 出现错误 $ ...

  5. Numpy库的学习(四)

    我们今天继续学习一下Numpy库 接着前面几次讲的,Numpy中还有一些标准运算 a = np.arange(3) print(a) print(np.exp(a)) print(np.sqrt(a) ...

  6. Jmeter输出完美报告

    做技术的就爱折腾, 看到哪里不够完美,就想把它改改, 使其顺眼. 同样Jmeter输出的报告实在差强人意, 截图发给领导看不够美观, 缺少统计汇总, 有什么方法给对方一个地址就可以浏览报告? 答案是肯 ...

  7. ext组件的查询方式

    1.使用id进行查询 (1)Ext.ComponentQuery.query("#mypanel") (2)Ext.getCmp("mypanel") 2.根据 ...

  8. Linux通过NFS实现文件共享

    在项目生产环境我们经常需要实现文件共享,传统的常见方案是通过NFS,实现服务器之间共享某一块磁盘,通过网络传输将分散的文件集中存储在一块指定的共享磁盘,实现基本的文件共享.实现这种方案,分服务端和客户 ...

  9. LNMP环境下部署搭建wordpress

    1. 下载WordPress安装包 访问官方网站https://cn.wordpress.org/ 点击Download.tar.gz下载linux平台安装包 2. 安装软件 2.1.上传安装包 使用 ...

  10. 周一04.3流程控制while循环

    #循环就是重复做某件事 1.条件循环:while,语法如下 while 条件: # 循环体 # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件... # 如果条件为假,那么循环体不执 ...