PHP 使用 debug_print_backtrace() 或 debug_backtrace() 打印栈轨迹
<?php
/* 使用debug_print_backtrace() 或 debug_backtrace() 打印栈轨迹 */
function fun1() {
	print "Hello world!\n";
	fun2();
}
function fun2() {
	Class1::fun3();
}
Class Class1 {
	static function fun3() {
		$class2 = new Class2();
		$class2->fun4();
	}
}
class Class2 {
	function fun4() {
		debug_print_backtrace();
		$backtrace = debug_backtrace();
		echo '<pre>';
		print_r($backtrace);
	}
}
fun1();
输出:
Hello world!
#0 Class2->fun4() called at [D:\wamp\www\practise\php\phpcookbook\error\track.php.php:17]
#1 Class1::fun3() called at [D:\wamp\www\practise\php\phpcookbook\error\track.php.php:11]
#2 fun2() called at [D:\wamp\www\practise\php\phpcookbook\error\track.php.php:7]
#3 fun1() called at [D:\wamp\www\practise\php\phpcookbook\error\track.php.php:30]
<pre>Array
(
[0] => Array
(
[file] => D:\wamp\www\practise\php\phpcookbook\error\track.php.php
[line] => 17
[function] => fun4
[class] => Class2
[object] => Class2 Object
(
) [type] => ->
[args] => Array
(
)
) [1] => Array
(
[file] => D:\wamp\www\practise\php\phpcookbook\error\track.php.php
[line] => 11
[function] => fun3
[class] => Class1
[type] => ::
[args] => Array
(
)
) [2] => Array
(
[file] => D:\wamp\www\practise\php\phpcookbook\error\track.php.php
[line] => 7
[function] => fun2
[args] => Array
(
)
) [3] => Array
(
[file] => D:\wamp\www\practise\php\phpcookbook\error\track.php.php
[line] => 30
[function] => fun1
[args] => Array
(
)
)
)
参考:
<PHP Cookbook>3'rd
PHP 使用 debug_print_backtrace() 或 debug_backtrace() 打印栈轨迹的更多相关文章
- Java异常的栈轨迹fillInStackTrace和printStackTrace的用法
		本文转自wawlian 捕获到异常时,往往需要进行一些处理.比较简单直接的方式就是打印异常栈轨迹Stack Trace.说起栈轨迹,可能很多人和我一样,第一反应就是printStackTrace()方 ... 
- 基础知识《十四》Java异常的栈轨迹fillInStackTrace和printStackTrace的用法
		本文转自wawlian 捕获到异常时,往往需要进行一些处理.比较简单直接的方式就是打印异常栈轨迹Stack Trace.说起栈轨迹,可能很多人和我一样,第一反应就是printStackTrace()方 ... 
- Linux下追踪函数调用,打印栈帧
		事情的起因是这样的,之前同事的代码有一个内存池出现了没有回收的情况.也就是是Pop出来的对象没有Push回去,情况很难复现,所以在Pop里的打印日志,跟踪是谁调用了它,我想在GDB调试里可以追踪调用的 ... 
- linux内核中打印栈回溯信息 - dump_stack()函数分析【转】
		转自:http://blog.csdn.net/jasonchen_gbd/article/details/45585133 版权声明:本文为博主原创文章,转载请附上原博链接. 目录(?)[-] ... 
- Atitit java的异常exception 结构Throwable类
		Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ... 
- Java异常的面试问题及答案-Part 1
		本文由 ImportNew - 韩远青 翻译自 Journaldev. Java提供了一个健壮的.面向对象的方法来处理出现异常,称为Java异常处理.我以前写过一篇长文章来介绍Java异常处理,今天我 ... 
- 给Lisp程序员的Python简介
		给Lisp程序员的Python简介 作者:Peter Norvig,译者:jineslong<zzljlu@gmail.com> 这是一篇为Lisp程序员写的Python简介(一些Pyth ... 
- java 异常处理机制(java 编程思想)
		一.概念 "异常"这个词有"我对此感到意外"的意思.问题出现了,你也许并不清楚该如何处理,但你的确知道不应该置之不理:你要停下来,看看是不是有别人或在别的地方, ... 
- 《Thinking In Java》阅读笔记
		<Thinking In Java>阅读笔记 前四章:对象导论. 一切都是对象. 操作符. 控制执行流程 public在一个文件中只能有一个,可以是一个类class或者一个接口interf ... 
随机推荐
- eclipse for php现有项目不能导入问题
			1.少了.project文件 解决办法:创建一个新项目,然后将新项目文件夹下的.project文件复制到将要导入的文件夹中. 
- Java 23种设计模式  (通俗易懂解释收集整理)
			(补充中...) P02 抽象工程模式 P14 TemplateMethod 模板方法模式 讲清楚了为什么叫做模板方法 http://www.cnblogs.com/java-my-life/arc ... 
- c++ 虚函数和纯虚函数
			在你设计一个基类的时候,如果发现一个函数需要在派生类里有不同的表现,那么它就应该是虚的.从设计的角度讲,出现在基类中的虚函数是接口,出现在派生类中的虚函数是接口的具体实现.通过这样的方法,就可以将对象 ... 
- HTML CSS SPRITE 工具
			推荐一个CSS SPRITE工具 网盘分享:http://pan.baidu.com/s/1sjx7cZV 
- MyEclipse2015配置Tomcat方法----》myeclipse2015
			1.打开Myeclipse2015,进入偏好设置window-perference,找到下图箭头指向的地方 2.点击Add按钮进入下面界面 3.点击next进入下面界面 4.选择tomat 选择JR ... 
- mysql 分表
			1.分表,即把一个很大的表达数据分到几个表中,这样每个表数据都不多. 优点:提高并发量,减小锁的粒度 缺点:代码维护成本高,相关sql都需要改动 2.分区,所有的数据还在一个表中,但物理存储数据根据一 ... 
- Kaggle入门教程
			此为中文翻译版 1:竞赛 我们将学习如何为Kaggle竞赛生成一个提交答案(submisson).Kaggle是一个你通过完成算法和全世界机器学习从业者进行竞赛的网站.如果你的算法精度是给出数据集中最 ... 
- javascript设计模式与开发实践
			1. js面向对象6种形式(详情) <!DOCTYPE html> <html> <head lang="en"> <meta chars ... 
- redis数据类型之—Hash
			(1)hash 简单介绍 hash类型适合存储对象,字段值只能是字符串,不支持其他数据类型. (2)hash 常用命令 // 增加hash属性值 > hset user: name zm (in ... 
- 2015ACM/ICPC亚洲区沈阳站
			5510 Bazinga 题意:给出n个字符串,求满足条件的最大下标值或层数 条件:该字符串之前存在不是 它的子串 的字符串 求解si是不是sj的子串,可以用kmp算法之类的. strstr是黑科技, ... 
