我们在Eclipse里选中一个PHP文件,右键选择Debug As->PHP CLI Application。

所谓CLI应用,是指这种脚本文件不需要任何Web服务器即可运行,当然, PHP运行时还是需要的。

我们在弹出的debug窗口里看到了XDebug:

XDebug是PHP调试的利器。在我的文件夹C:MyAppwampinphpphp5.5.12里面有个php.ini配置文件,文件的末尾有这样一个配置:

; XDEBUG Extension

zend_extension = “C:/MyApp/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll”

;

[xdebug]

xdebug.remote_enable = off

xdebug.profiler_enable = off

xdebug.profiler_enable_trigger = off

xdebug.profiler_output_name = cachegrind.out.%t.%p

xdebug.profiler_output_dir = “C:/MyApp/wamp/tmp”

xdebug.show_local_vars=0

这里实际上就指明了XDEBUG的位置:

那么Eclipse?

使用任务管理器查看,当我用Eclipse调试PHP CLI应用时,出现了一个PHP.exe进程:

命令提示行:

C:MyAppwampinphpphp5.5.12php.exe -n -c C:Usersi042416AppDataLocalTempphp-inisession2307282238017995350.tmpphp.ini -d asp_tags=off -d short_open_tag=on C:Usersi042416scp20180425 est ewfile.php

-n 选项:不使用全局的php.ini文件

-c 选项:使用-c后面指定的php.ini, 即C:Usersi042416AppDataLocalTempphp-inisession2307282238017995350.tmpphp.ini

-d 选项:临时指定一个php.ini里没有的参数,即asp_tags=off

再看看这个我开始CLI调试后才临时生成的php.ini文件:

虽然有70多k,但是绝大多数是分号开头的注释,只有最后几行才是有效信息:

希望本文对大家理解Eclipse里使用XDebug进行PHP CLI应用的调试原理有所帮助。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙".

PHP CLI应用的调试原理相关推荐

  1. debug 调试原理理解

    引言: 昨天,看了一篇文章,很受启发,记得之前听别的人远程调试过代码,觉得很神奇,在自己程序里打断点,连接远程服务器,开启调试后可以调用远程方法来看数据的输入和输出,不需要查找问题,重新部署,测试问题 ...

  2. 【系统篇】从int 3探索Windows应用程序调试原理

    http://www.cnblogs.com/xuanyuan/p/3998408.html 探索调试器下断点的原理 在Windows上做开发的程序猿们都知道,x86架构处理器有一条特殊的指令--in ...

  3. 【调试原理】逆向peid-判定vc

    以前一直认为一个工具只要会用就可以了,可是作为一名喜欢安全的渣渣来讲,会用还远远不够,你还得了解它,欺骗它,改造它,提升它! 上一篇文章讲了如何脱掉peid0.94版本的壳 [调试原理]逆向peid_ ...

  4. ARM JTAG 调试原理

    ARM JTAG 调试原理 JTAG的接口是一种特殊的4/5个接脚接口连到芯片上 ,所以在电路版上的很多芯片可以将他们的JTAG接脚 通过Daisy Chain的方式连在一起,并且Probe只需连接到 ...

  5. JTAG、SWD调试原理简析

    JTAG.SWD调试原理简析 STM32F10xxx使用CortexM-M3内核,该内核内含硬件调试模块,支持复杂的调试操作.硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止.内核停 ...

  6. 转--深入LUA脚本语言,让你彻底明白调试原理

    [原创声明] 如果觉得文章不错,请转发.分享给您的朋友 我会把十多年嵌入式开发中的项目实战经验进行总结.分享,相信不会让你失望的! 转载:欢迎转载,但未经作者同意,必须保留此段声明,必须在文章中给出原 ...

  7. 写了一个将VxWorks的shell打印输出到指定内存中的接口,可广泛用于CLI下的调试函数显示以及故障自动捕获等功能,稍作修改可以适合其它嵌入式OS...

    本代码在Tornado2.0的Simu下调试通过,原理上与CPU架构无关,应该都适用. 如果引用的话,请告诉我,或者评论一句[页面最下方],不要一声不吭 /* usrAppInit.c - stub ...

  8. PHPStorm配置PHP调试环境,xdebug调试原理

    之前的调试环境有一点混乱,所以决定重新配置一遍,写这篇文章记录出现的问题,希望能够帮助到你们 搭建环境 windows phpstudy apache/nginx php7.3 phpstorm xd ...

  9. Linux内核调试原理和工具介绍--理解静态插装/动态插装、tracepoint、ftrace、kprobe、SystemTap、Perf、eBPF

    可以将linux跟踪系统分成Tracer(跟踪数据来自哪里),数据收集分析(如"ftrace")和跟踪前端(更方便的用户态工具). 1. 数据源(Tracers) printk 是 ...

最新文章

  1. 基于JSP实现个人博客
  2. [云炬ThinkPython阅读笔记]1.4 算术运算符
  3. shell中$*和$@ 两个都区别
  4. 驱动程序和应用程序之间的体系结构不匹配_修复Win10上的黑屏问题全攻略,并不高深,一看就会...
  5. .NET跨平台实践:再谈用C#开发Linux守护进程 — 完整篇
  6. CSDN 联合 18 家大厂招聘直播,10 小时突破百万热度!
  7. 32位系统是指地址_不起眼却很重要丨32位操作系统与64位操作系统详解(含查询教程)...
  8. 面试官问:请拿出一段体现你水平的代码时,该如何回答?
  9. Camera 驱动 Bringup
  10. 用matlab画相频曲线_matlab 幅频特性 相频特性代码,图片
  11. Windows服务器双网卡冲突
  12. 微信网页版扫码登录原理
  13. ANR系列之一:ANR显示和日志生成原理讲解
  14. java中立方根方法,Java Math.cbrt() 方法
  15. 性能衡量指标-吞吐量与响应时间
  16. 看《李开复先生谈创新思维》
  17. IP地址的分类和指派范围
  18. android studio基础教程:2.程序在哪写
  19. 网站服务器如何防御DDOS攻击和CC攻击
  20. js中text方法是啥意识_JS中Text节点总结

热门文章

  1. 使用popwindow制作弹出框与获得焦点弹出软键盘
  2. Django从理论到实战(part44)--JsonResponse类
  3. 20应用统计考研复试要点(part41)--概率论与数理统计
  4. 小白的算法初识课堂(part8)--贪婪算法
  5. numpy基础(part9)--矩阵
  6. 11月碎碎念-谈职场礼貌
  7. SAP ABAP Platform 1909最新版的 docker 镜像
  8. SAP Spartacus cxFocus单元测试Expected null to equal -1的错误分析
  9. SAP Spartacus 的页面设计思路
  10. SAP Spartacus PagelayoutComponent里的section和slot