PHP CLI应用的调试原理
我们在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应用的调试原理相关推荐
- debug 调试原理理解
引言: 昨天,看了一篇文章,很受启发,记得之前听别的人远程调试过代码,觉得很神奇,在自己程序里打断点,连接远程服务器,开启调试后可以调用远程方法来看数据的输入和输出,不需要查找问题,重新部署,测试问题 ...
- 【系统篇】从int 3探索Windows应用程序调试原理
http://www.cnblogs.com/xuanyuan/p/3998408.html 探索调试器下断点的原理 在Windows上做开发的程序猿们都知道,x86架构处理器有一条特殊的指令--in ...
- 【调试原理】逆向peid-判定vc
以前一直认为一个工具只要会用就可以了,可是作为一名喜欢安全的渣渣来讲,会用还远远不够,你还得了解它,欺骗它,改造它,提升它! 上一篇文章讲了如何脱掉peid0.94版本的壳 [调试原理]逆向peid_ ...
- ARM JTAG 调试原理
ARM JTAG 调试原理 JTAG的接口是一种特殊的4/5个接脚接口连到芯片上 ,所以在电路版上的很多芯片可以将他们的JTAG接脚 通过Daisy Chain的方式连在一起,并且Probe只需连接到 ...
- JTAG、SWD调试原理简析
JTAG.SWD调试原理简析 STM32F10xxx使用CortexM-M3内核,该内核内含硬件调试模块,支持复杂的调试操作.硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止.内核停 ...
- 转--深入LUA脚本语言,让你彻底明白调试原理
[原创声明] 如果觉得文章不错,请转发.分享给您的朋友 我会把十多年嵌入式开发中的项目实战经验进行总结.分享,相信不会让你失望的! 转载:欢迎转载,但未经作者同意,必须保留此段声明,必须在文章中给出原 ...
- 写了一个将VxWorks的shell打印输出到指定内存中的接口,可广泛用于CLI下的调试函数显示以及故障自动捕获等功能,稍作修改可以适合其它嵌入式OS...
本代码在Tornado2.0的Simu下调试通过,原理上与CPU架构无关,应该都适用. 如果引用的话,请告诉我,或者评论一句[页面最下方],不要一声不吭 /* usrAppInit.c - stub ...
- PHPStorm配置PHP调试环境,xdebug调试原理
之前的调试环境有一点混乱,所以决定重新配置一遍,写这篇文章记录出现的问题,希望能够帮助到你们 搭建环境 windows phpstudy apache/nginx php7.3 phpstorm xd ...
- Linux内核调试原理和工具介绍--理解静态插装/动态插装、tracepoint、ftrace、kprobe、SystemTap、Perf、eBPF
可以将linux跟踪系统分成Tracer(跟踪数据来自哪里),数据收集分析(如"ftrace")和跟踪前端(更方便的用户态工具). 1. 数据源(Tracers) printk 是 ...
最新文章
- 基于JSP实现个人博客
- [云炬ThinkPython阅读笔记]1.4 算术运算符
- shell中$*和$@ 两个都区别
- 驱动程序和应用程序之间的体系结构不匹配_修复Win10上的黑屏问题全攻略,并不高深,一看就会...
- .NET跨平台实践:再谈用C#开发Linux守护进程 — 完整篇
- CSDN 联合 18 家大厂招聘直播,10 小时突破百万热度!
- 32位系统是指地址_不起眼却很重要丨32位操作系统与64位操作系统详解(含查询教程)...
- 面试官问:请拿出一段体现你水平的代码时,该如何回答?
- Camera 驱动 Bringup
- 用matlab画相频曲线_matlab 幅频特性 相频特性代码,图片
- Windows服务器双网卡冲突
- 微信网页版扫码登录原理
- ANR系列之一:ANR显示和日志生成原理讲解
- java中立方根方法,Java Math.cbrt() 方法
- 性能衡量指标-吞吐量与响应时间
- 看《李开复先生谈创新思维》
- IP地址的分类和指派范围
- android studio基础教程:2.程序在哪写
- 网站服务器如何防御DDOS攻击和CC攻击
- js中text方法是啥意识_JS中Text节点总结
热门文章
- 使用popwindow制作弹出框与获得焦点弹出软键盘
- Django从理论到实战(part44)--JsonResponse类
- 20应用统计考研复试要点(part41)--概率论与数理统计
- 小白的算法初识课堂(part8)--贪婪算法
- numpy基础(part9)--矩阵
- 11月碎碎念-谈职场礼貌
- SAP ABAP Platform 1909最新版的 docker 镜像
- SAP Spartacus cxFocus单元测试Expected null to equal -1的错误分析
- SAP Spartacus 的页面设计思路
- SAP Spartacus PagelayoutComponent里的section和slot