PHP代码调试_php调试工具

PHP代码调试_php调试工具PHP语言没有多线程、同步等概念,大多由函数和类组成,数据类型和语法比较简单,利用其丰富的内置函数就可以实现大部分的调试功能。因此,PHP代码比较容易理解,也很容易调试。php代码调试的实现方式主要有两种:通过PHP的调试函数实现通过断点调试工具实现1.PHP的调试函数对于一般的PHP代码,使用几个常用的输出函数就可实现代码调试。常

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

PHP语言没有多线程、同步等概念,大多由函数和类组成,数据类型和语法比较简单,利用其丰富的内置函数就可以实现大部分的调试功能。因此,PHP代码比较容易理解,也很容易调试。
php代码调试的实现方式主要有两种:通过PHP的调试函数实现和通过断点调试工具实现。
1. PHP的调试函数
对于一般的PHP代码,使用几个常用的输出函数就可实现代码调试。常用的函数有echo、print、print_r、var_dump、var_export、die、exit等等。
其中,echo 和 var_dump 最常用。
如果要在输出变量的值后终止流程,可使用 die 或 exit 语句。die 和 exit 在功能上基本是等价的,都是语句结构,而不是函数。下面的写法都是正确的:
exit;
exit();
exit(0);
exit(‘程序中止!’);
2. 断点调试
一般情况下,利用PHP的输出函数就能轻松调试大多数问题,但是有时,还需要更强大有效的调试手段,这就需要利用一些支持断点调试的工具。
断点调试,也叫单步调试,是指程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步自动跟踪程序执行的流程,根据变量的值,找到错误的原因。
很多集成的开发工具(IDE),如Zend Studio、PhpStorm等,都支持断点调试,在需要调试的代码行设置断点,然后按预设的快捷键步进。
当代码涉及到很多文件时,比如在MVC中,Controller层的代码可能会设计很多个文件,这些文件包括框架的核心配置初始化文件、类文件、路由控制文件等,如果用手工调试会比较累。另外,某些应用可能比较复杂,我们并不清楚流程是怎样的,也不知道究竟哪一步出了问题,该去哪里追踪变量。如果用手工方法一步一步地输出变量,调试的效率就会很低。在这些情况下,就轮到断点调试工具上场了。
常用的调试工具有 zend debuger 和 xdebug,据说 zend debugger 不支持php5.3以上的版本,故这里我们只讲解 xdebug 调试器的使用。
以Windows系统为例,到 xdebug 官网(
http://xdebug.org/download.php)下载和PHP版本对应的xdebug扩展,要注意xdebug扩展所适用的PHP版本号、TS(线程安全)版还是NTS(非线程安全)版,以及VC6版本还是VC9版本,这些都应该和安装的PHP对应,否则可能出现问题。
下载和PHP对应的xdebug扩展后,将php_xdebug.dll文件放到php的ext扩展目录下,编辑php.ini配置文件,增加下面的配置:
[XDebug]
; 用中括号括起来的是模块名称,它会在你的phpinfo信息中作为分隔标题显示出来
zend_extension = "E:\xampp\php\ext\php_xdebug.dll"
; 设置php_xdebug的DLL文件路径
xdebug.auto_trace=On
; 将php对函数调用的监测信息用文件格式输出
xdebug.collect_params=On
; 将php对函数调用的参数加入到函数过程调用的监测中
xdebug.collect_return=On
; 将函数调用的返回值加入到函数过程调用的监测中
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
; 这是效能监测的设置开关
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "E:\xampp\tmp"
;这是效能监测信息开启的情况下,写入到profiler_output_dir设置的路径中,会生成一个相应的文件
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
; 开启远程调试
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
; 远程主机地址
xdebug_remote_port=9000
; 主机的端口
xdebug.trace_output_dir = "E:\xampp\tmp"
;设置的函数调用监测信息的输出路径
其实,在xampp中的php已经包含了对应版本的xdebug扩展,只不过,在php.ini配置文件中,关于该扩展的配置项都加了注释,我们只需修改php.ini,将注释取消即可,也就是删除代码行行首的分号注释符,修改后的配置项如下:

[XDebug]

zend_extension = “E:\xampp\php\ext\php_xdebug.dll”

xdebug.profiler_append = 0

xdebug.profiler_enable = 1

xdebug.profiler_enable_trigger = 0

xdebug.profiler_output_dir = “E:\xampp\tmp”

xdebug.profiler_output_name = “cachegrind.out.%t-%s”

xdebug.remote_enable = 0

xdebug.remote_handler = “dbgp”

xdebug.remote_host = “127.0.0.1”

xdebug.trace_output_dir = “E:\xampp\tmp”

保存php.ini后,重启web服务器。打印phpinfo,在输出的信息页面,查找字符串xdebug,如果有如下信息,就说明php的xdebug扩展开启成功。
PHP代码调试_php调试工具

xdebug安装成功后,我们还需要对集成开发工具(如Zend Studio)进行配置,使其默认使用 xdebug 调试器进行断点调试。
关于如何在 Zend Studio 中配置和使用 xdebug 断点调试工具,可参考:
http://blog.csdn.net/lamp_yang_3533/article/details/52661749

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186834.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android 系统 目录 分析「建议收藏」

    Android 系统 目录 分析「建议收藏」转自:hknote及Ophone8作者:Wanan.’s  及  O友今天要来分析一下Android文件系统的/system目录的结构。/system目录是在Android文件系统占有及其重要的位置,基本上所有的工具和应用程序都在这个目录下,我看来是一个真正的rootfs。他在Android手机中存放在nandflash的mtd3中,是一个yaffs2文件系统,在启动时被挂载在root

    2022年10月15日
    0
  • vue点击复制_js获取复制的内容

    vue点击复制_js获取复制的内容Vue中配合clipboard.js实现点击按钮复制内容

    2022年4月21日
    90
  • 纯净版系统怎么安装_纯净版安装版win7

    纯净版系统怎么安装_纯净版安装版win7百度网盘下载:1.链接:https://pan.baidu.com/s/1o-HcKddSG6IAz_0COKhq8Q提取码:hkhr2.扫码下载:

    2022年8月4日
    3
  • springboot+redis+jedis实现分布式锁小Demo

    springboot+redis+jedis实现分布式锁小Demo

    2021年7月12日
    86
  • Java String.replace()方法

    Java String.replace()方法用法实例教程,返回一个新的字符串,用newChar替换此字符串中出现的所有oldChar声明以下是java.lang.String.replace()方法的声明public String replace(char oldChar, char newChar)参数oldChar — 这是旧的字符.newChar — 这是新

    2022年3月10日
    150
  • mysql左连接查询

    mysql左连接查询mysql左连接查询左连接查询:以左表为主表,右表为从表,查询符合条件的数据1.当右表中数据匹配不到时展示为空例:左表两条数据,按条件匹配到右表一条数据且匹配左表第一条,结果展示两条数据,且第二条数据右表中的字段全部为null2.当匹配到右表的数据为多条时,左表数据会重复展示,不会自动合并例:左表数据一条,按条件匹配到右表数据三条,结果展示三条数据,左表数据均相同,右表数据不同…

    2022年6月3日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号