php show page trace,显示trace信息

本文介绍ThinkPHP框架中的调试工具及方法,包括页面Trace功能的使用、配置与扩展,以及如何利用trace方法进行变量输出和异常抛出。适用于框架开发者进行高效调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调试模式并不能完全满足我们调试的需要,有时候我们需要手动的输出一些调试信息。除了本身可以借助一些开发工具进行调试外,ThinkPHP还提供了一些内置的调试工具和函数。例如,页面Trace功能就是ThinkPHP提供给开发人员的一个用于开发调试的辅助工具。可以实时显示当前页面的操作的请求信息、运行情况、SQL执行、错误提示等,并支持自定义显示。

默认页面trace时

![页面Trace默认状态](https://box.kancloud.cn/2015-05-10_554ef847ab67c.png)

展开的Trace效果

![展开时的显示](https://box.kancloud.cn/2015-05-10_554ef868b2c97.png)

页面Trace功能对调试模式和部署模式都有效,不过只能用于有页面输出的情况(如果你的操作没有任何输出,那么可能页面Trace功能对你帮助不大,你可能需要使用后面的调试方法)。

> 在部署模式下面,显示的调试信息没有调试模式完整,通常我们建议页面Trace配合调试模式一起使用。

要开启页面Trace功能,需要在项目配置文件中设置:

~~~

// 显示页面Trace信息

'SHOW_PAGE_TRACE' =>true,

~~~

该参数默认为关闭,开启后并且你的页面有模板输出的话,页面右下角会显示ThinkPHP的LOGO:

我们看到的LOGO后面的数字就是当前页面的执行时间(单位是秒) 点击该图标后,会展开详细的页面Trace信息,如图:

页面Trace框架有6个选项卡,分别是基本、文件、流程、错误、SQL和调试,点击不同的选项卡会切换到不同的Trace信息窗口。

| 选项卡 | 描述 |

|-----|-----|

| 基本 | 当前页面的基本摘要信息,例如执行时间、内存开销、文件加载数、查询次数等等。 |

| 文件 | 详细列出当前页面执行过程中加载的文件及其大小。 |

| 流程 | 会列出当前页面执行到的行为和相关流程(待完善)。 |

| 错误 | 当前页面执行过程中的一些错误信息,包括警告错误。 |

| SQL | 当前页面执行到的SQL语句信息。 |

| 调试 | 开发人员在程序中进行的调试输出。 |

页面Trace的选项卡是可以定制和扩展的,默认的配置为:

~~~

'TRACE_PAGE_TABS'=>array(

'base'=>'基本',

'file'=>'文件',

'think'=>'流程',

'error'=>'错误',

'sql'=>'SQL',

'debug'=>'调试'

)

~~~

也就是我们看到的默认情况下显示的选项卡,如果你希望增加新的选项卡:用户,则可以修改配置如下:

~~~

'TRACE_PAGE_TABS'=>array(

'base'=>'基本',

'file'=>'文件',

'think'=>'流程',

'error'=>'错误',

'sql'=>'SQL',

'debug'=>'调试',

'user'=>'用户'

)

~~~

也可以把某几个选项卡合并,例如:

~~~

'TRACE_PAGE_TABS'=>array(

'base'=>'基本',

'file'=>'文件',

'think'=>'流程',

'error|debug|sql'=>'调试',

'user'=>'用户'

)

~~~

我们把刚才的用户信息调试输出到用户选项卡,trace方法的用法如下:

`trace($user,'用户信息','user');`

第三个参数表示选项卡的标识,和我们在TRACE_PAGE_TABS中配置的对应。 默认情况下,页面Trace窗口显示的信息是不会保存的,如果希望保存这些trace信息,我们可以配置PAGE_TRACE_SAVE参数

`'PAGE_TRACE_SAVE'=>true`

开启页面trace信息保存后,每次的页面Trace信息会以日志形式保存到项目的日志目录中,命名格式是: 当前日期_trace.log,例如:12-06-21_trace.log

如果不希望保存所有的选项卡的信息,可以设置需要保存的选项卡,例如:

`'PAGE_TRACE_SAVE' => array('base','file','sql');`

设置后只会保存base、file和sql三个选项卡的信息。

页面Trace只能用于有页面输出的情况,但是trace方法可以用在任何情况,而且trace方法可以用于AJAX等操作。

Trace方法的格式:

trace('变量','标签','级别','是否记录日志')例如:

~~~

$info = '测试信息';

trace($info,'提示');

~~~

如果希望把变量调试输出到页面Trace的某个选项卡里面,可以使用:

~~~

trace($info,'提示','user');

~~~

表示输出到user选项卡,如果没有指定选项卡的话,默认会输出到debug选项卡。 trace方法也可以直接抛出异常,如果是输出到ERR选项卡,并且开启 `'TRACE_EXCEPTION'=>true`

的话,

~~~

trace($info,'错误','ERR');

~~~

会抛出异常。 有三种情况下,trace方法会记录日志:

1. AJAX请求

1. SHOW_PAGE_TRACE为false,也就是页面Trace关闭的情况下

1. trace方法的第四个参数为true

在这种情况下,trace方法的第三个参数就表示记录的日志级别,通常包括:

~~~

'ERR' // 一般错误: 一般性错误

'WARN' // 警告性错误: 需要发出警告的错误

'NOTIC' // 通知: 程序可以运行但是还不够完美的错误

'INFO' // 信息: 程序输出信息

'DEBUG' // 调试: 调试信息

'SQL' // SQL:SQL语句

~~~

## 断点调试

凭借强大的页面Trace信息功能支持,ThinkPHP可以支持断点调试功能。 我们只需要在不同的位置对某个变量进行trace输出即可,例如:

~~~

$blog = D("Blog");

$vo = $blog->create();

trace($vo,'create vo');

$vo = $blog->find();

trace($vo,'find vo');

~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值