淘先锋技术网

首页 1 2 3 4 5 6 7

作为一名 php 开发者,debugging 是无法避免的工作。Debugging 是通过测试方法和工具、熟悉应用程序和编程环境来检测和消除错误或故障。在 debug 过程中,遇到的不少坑坑洼洼可能会浪费我们宝贵的开发时间。今天,我们来聊聊 some php debug pit。这篇文章主要从五个方面入手:debug 工具、运行环境、代码错误、逻辑反复和时间消耗。

Debug 工具

Debug 工具

选择一款实用的 debug 工具尤为重要。phpStorm 、Xdebug、Kint、FireBug 等常见的 debug 工具,使用的方式和效果也不尽相同。 在 phpStorm 里,如果 `echo "some msg"` 或 `var_dump` 没有输出结果,需要在 Run- >Console- >Click to activate console 后,在 Console 中重新执行代码。这个坑不注意的话,会漏掉好几个 bug。

function foo($data) {
$a = 5;
var_dump($a);
foreach($data as $item) {
print_r($item->name . "\n");
}
}

上述代码使用 phpStorm 进行 Debug,很显然 `var_dump` 已经被打印出来。这样大大简化了 bug 的查找难度。

运行环境

运行环境

环境不一致可能会导致代码出现奇奇怪怪的问题。比如在本地搭建的出现了类自动加载 bug, 但是在线上环境这个 bug 并不存在,这时候就需要检查自动加载 path 的路径是否正确,以及版本的问题。出现这类问题多是因为在不同的运行环境中, php 版本和扩展库的变化导致的。所以重构代码时要小心 php 的一些特性,在不同环境下可能表现不同。

代码错误

代码错误

可以通过 error_reporting 和 display_errors开关来打开 php 的错误信息显示。在开发阶段中,可以暂时打开 display_errors。这样在出现错误时,页面上就会显示相应的错误信息。但是在生产环境中,不要将 display_errors 设置为 on。因为这样意味着应用程序内部的错误信息会公之于众,很容易暴露网站的细节。正确的做法是将错误信息写入日志文件。

error_reporting(E_ALL);
ini_set('display_errors', 1);

注意时刻检查代码中的语法错误,因为语法错误可能导致整个页面不能正常访问。

逻辑反复

逻辑反复

杜绝反复, 是效率工作的一大原则。工作就是在极其有限的时间内完成尽可能多的任务,发现 bug 也是类似的一种工作。在 debugging 过程中,经常会因为一些没有注意到或是忘记检查过的小问题变成重头戏。比如if语句未进入预期的分支 ; 某个变量不是预期的值。这样的错误在前期调试时没有找出来,会导致后期 debugging 变得极为繁琐。

public function foo($a) {
if($a >5) {
echo "big";
} else if($a >2) {
echo "medium";
} else {
echo "small";
}
}

时间消耗

时间消耗

debugging 往往是一项需要耐心的,有潜力消耗大量时间和精力的工作。在查找 error 时,有些 error 可能会需要更多的时间才能发现,有些 error 甚至需要多次翻阅大量资料才能找到根本原因。在这个过程中,重要的是坚持、专注和冷静思考。

在许多情况下, debugging 的时间点是极为重要的。 所以,建议在代码提交之前,先运行 debug,把问题解决,然后再提交。这样保证别人拿到的代码都是 debug 过的,减少交流和审阅之间的时间。

总结

总结

On the road of Programming ,debugging 离不开我们。对于 php 开发者而言,一定要注意选择合适的 debug 工具,符合开发环境的要求,在代码出现错误、逻辑反复、时间消耗上尽可能要少砸,把时间留出来慢慢调试。相信只要你全意投入,只要你肯不停探索前行,总有一天,你能迎风奋跑,无惧克服所有 challenges。