调试模式
//入口文件处,开启调试模式。
define('APP_DEBUG',true);
调试模式在开发中开启的优势有:
1、开启日志记录,任何错误和调试信息都会详细记录;
2、关闭模板缓存,模板修改可以及时生效;
3、记录SQL日志,方便分析SQL;
4、关闭字段缓存,数据表字段修改受缓存影响;
5、严格检查文件大小写,帮助提前发现Linux部署问题;
6、通过页面Trace公共更好的调试和发现问题。
异常处理
TP的异常抛出相对来说比较人性化,当然我们也可以自行调用这种错误信息。
//手动抛出异常
E('失败!');
模型调试
在模型调试中,为了更好查明错误,经常需要查看最近使用SQL语句。
//获取最近的SQL语句
echo $user->getLastSql();
//查看SQL的错误信息
$list = $user->query('SELECT * FROM aaa');
echo $user->getDbError();
性能调试
我们可以使用大G()
方法,来测试某段代码的内存开销和运行时间。
//包裹要测试的代码
G('begin'); //包裹开始
$user = D('User');
$list = $usser->select();
$this->assign('list',$list);
$this->display();
G('end'); //包裹结束
//计算运行时间,单位秒
echo G('begin','end','s');
echo '<br/>';
//计算消耗内存,单位kb
echo G('begin','end','m').'kb';
PS:如果你的环境不支持内存消耗测试,它会自动按时间运算。
变量调试
在开发中,我们经常需要对变量进行调试,一般会采用PHP自带的var_dump()
和print_r
方法,TP内置了一个对浏览器友好的dump()
方法,用于输出变量信息。
//参数1必选,其他可选
dump($list, true, null, false);
PS:参数1 为变量,参数2 为是否打印,参数3 标识,参数4 是否采用print_r
。
日志记录
日志处理是系统自动进行的,在开启日志记录的情况下,会记录下运行的日志级别
的所有日志信息。
一般情况下,SQL 日志级别必须在调试模式下开启有效,否则不会记录。默认情况下,一般在调试模式下记录日志,如果要在部署模式下开启日志记录,则需要进行配
置。
//部署模式下开启日志记录
'LOG_RECORD' =>true,
//运行的日志记录级别
'LOG_LEVEL' =>'EMERG,ALERT,CRIT,ERR',
ThinkPHP 对系统的日志按照级别来分类,包括:
1.EMERG 严重错误,导致系统崩溃无法使用
2.ALERT 警戒性错误, 必须被立即修改的错误
3.CRIT 临界值错误, 超过临界值的错误
4.ERR 一般性错误
5.WARN 警告性错误, 需要发出警告的错误
6.NOTICE 通知,程序可以运行但是还不够完美的错误
7.INFO 信息,程序输出信息
8.DEBUG 调试,用于调试信息
9.SQL SQL 语句,该级别只在调试模式开启时有效
//手动写入,第二参数为级别,第三为强制
Log::record('日志','WARN',true);
//不受配置文件影响
Log::write('日志','WARN');
Trace
ThinkPHP 提供了一个非常方便的调试工具:页面Trace。这个工具必须在调试模式下有
效。
//页面Trace
'SHOW_PAGE_TRACE' =>true,
//设置要显示的调试模块
'TRACE_PAGE_TABS'=>array(
'base'=>'基本',
'file'=>'文件',
'think'=>'流程',
'error'=>'错误',
'sql'=>'SQL',
'debug'=>'调试'
),
//调试方法
trace('调试方法', '提示', 'user');