参考资料:https://www.bilibili.com/video/BV1Qx411f7pF

一、PHP程序的调试

这里对PHP程序调试的IDE选择的是PHPStorm,因为PHPStorm应该是PHP语言当前最受欢迎的代码编辑环境,而且对各种补全以及生成PHPdoc功能的支持都非常好。

1. 单个PHP程序的调试

首先依次选择 File -> Settings -> PHP (CLI Interpreter栏原本是空的):

然后选择自己的php.exe即可(如果没有显示的需要先设置php环境变量):

选择之后保存确定即可。

我当前使用的php集成环境是Wampserver64(Apache+PHP+MySQL),具体版本如下:

在我的这个PHP运行环境中,就已经自带有xdebug插件了,即对应的.dll文件包含在每个php版本文件夹中的zend_ext目录下,如下所示(如没有xdebug插件则需要先去下载):


然后我们需要打开php目录下的php.ini,添加上如下代码:


这里的zend_extension的值为刚才xdebug.dll文件的地址,而我这里不是刚刚那个文件是因为我将它复制到了ext目录下并修改了它的命名。

然后即可编辑php文件,然后在合适的地方打上断点:

然后右键文件选择调试该文件即可:

最终我们终于实现了单步调试,并且在下面的debug tab中查看到各个变量的内容了:

2. PHP框架代码的调试

这里我所使用的PHP框架是thinkphp6.x,其他的框架应该也是类似的。

这里我们需要再次修改原来的php.ini文件,如下所示:

后面的这几个参数在PhpStorm中调试单文件也可以看到,我们把它们如上加入到php.ini文件中即可。

此后我们再转到PhpStorm中,选择 File->Settings->Debug:

这里将Debug port修改为php.ini文件中xdebug.remote_port所设置的端口,最后我们只需在php.ini文件中再添加上一句:

这句意味着自动开启xdebug,如果设置了这个属性,则我们可以在任意时刻进行断点调试,当然这也意味着运行效率有一定的降低,因为需要产生额外的调试信息,这一点和其他语言的分别以运行模式和调试模式运行是类似的,因此这个属性可以看情况进行关闭掉以提高性能(不需要调试时关闭即可)。

tips:修改了php.ini文件的配置,需要重新启动Apache等服务才可以生效,我这里重启了WampServer的所有服务。

重新启动服务后,我们输入:php think run -H '自己的虚拟域名'(这是thinkphp的启动命令)来启动tp6项目:

然后使用浏览器访问这个生成的url:http://api.tp6.com:8000/

可以发现弹出这个窗口:

点击accept即可,然后发现php程序停在了断点:

终于,我们实现了对php框架代码的单步调试,框架中使用的变量等信息也可以查看了,这比使用var_dump等打印的方式一次一调的方式强太多了!

二、JavaScript程序的调试

这里使用到的代码调试工具为Chrome,首先先编写一小段js程序:

然后使用浏览器打开这个html文件:

此时按下F12打开调试工具,选择Sources栏:

选择了对应的文件后,我们可以看到刚刚编写的js代码,然后我们可以在对应的行号上打上断点,如:

然后刷新页面,可以看到js程序停在了断点:

此时,我们可以在右边栏查看变量等各种信息:

至此我们已实现了对js程序的调试。

三、总结

本文实现了对PHP程序及JavaScript程序的单步调试,虽然就PHP和JavaScript程序而言,我们大多数情况都可以使用打印大法,如:console.log()、echo、var_dump()来进行调试,但遇到一些棘手的问题时,单步调试可以一次性解决大部分的bug,大大缩短解决问题的时间,应该是不可缺少的重要工具,因此特地开贴记录在PHP和JavaScript项目中这一重要工具的配置方法。

PHP、TP6框架及JavaScript的单步调试的更多相关文章

  1. 在无法单步调试的情况下找Bug的技巧

    比如说你有一个大的模块A,其组成部分有B,C,D这3个小的模块,现在A出了一个BUG,因为某种原因的限制你无法单步调试.怎么较快地定位BUG发生的根源? 这里记录一下刚才我在找BUG的时候采用的思路, ...

  2. Hawk 4.7 单步调试

    单步调试的意义 已经编写的工作流,可能会因为某些外界环境的变化而出错,此时需要排除错误,我们可以使用单步调试. 单步调试的本质,相当于只使用前n个模块,这样就能看到每个步骤下,流的改变. 例子 还是上 ...

  3. 关于 MonoDevelop on Linux 单步调试问题的解决

    在 MonoDevelop 中默认是关闭对外部程序集(.dll)的调试,可通过如下步骤来解决这个问题. 通过菜单[Edit]-[Preferences]-[Debugger]进入到调试器的设置页,把“ ...

  4. jeecg单步调试

    自己没本事写开发平台,用别人的又各种担心,想学着别人弄个单步调试,老是出现这个"source not found"-- 百度各种方法都搞不定,担心是自己安装错了?这个jeecg本身 ...

  5. Android Studio中JNI程序的单步调试和日志打印

    近日有个算法(检测碰撞)需要用C++实现,目的是IOS和ANDROID中共享同一段程序. 下面说说android调用这段程序过程中遇到的一些事情.(过程中网上搜索了一些相关文章,大部分说的是eclip ...

  6. idea导入maven项目,web browser远程单步调试

    问题:之前用idea14.1.3导入maven项目后,maven的dependencies不能自动解决依赖,到处都是红色的红线,看着就受不了.虽然不影响命令行编译,但是看着实在是不爽.总结下面几小步: ...

  7. VC++6.0 Debug单步调试

    相信大家对谭浩强童鞋都不陌生,想当年,是他 引领我们步入了C的殿堂,我们从他那里学会了如何写代码,他却没有教我们如何Debug,而我们伟大的老师,也对此只字不提.相信很少有人可以一次性写出 完全正确的 ...

  8. 一种 Visual Studio 不能单步调试(函数调用)问题

    Visual Studio每次出"莫名其妙的问题"的时候都非常棘手.这次遇到这么一个问题: 新建的Windows的控制台窗口程序(C++),编译链接运行没有问题.但是想单步调试一下 ...

  9. Ecplise + Xdebug 一波三折终于能单步调试了

    http://my.oschina.net/012345678/blog/152889 Ecplise + Xdebug 一波三折终于能单步调试了 发表于2年前(2013-08-15 15:50)   ...

随机推荐

  1. 《DotNet Web应用单文件部署系列》三、混淆dll文件

    众所周知,C#编译后的dll文件可被反编译,网上搜索"C# 反编译"会出现一大堆资料.为了提高反编译成本,我们必须对dll文件进行混淆处理. 目前,C#混淆工具很多,我推荐obfu ...

  2. CF700E-Cool Slogans【SAM,线段树合并,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/CF700E 题目大意 给出一个字符串\(S\),求一个最大的\(k\)使得存在\(k\)个字符串其中\(s_1\)是 ...

  3. 题解 CF1103E Radix sum

    题目传送门 题目大意 给出一个\(n\)个数的序列\(a_{1,2,..,n}\),可以选\(n\)次,每次可以选与上次选的相同的数,问对于\(\forall p\in[0,n-1]\)满足选出来的数 ...

  4. 题解 Christmas Game

    题目传送门 题目大意 给出 \(t\) 个 \(n\) 个点 \(m\) 条边的无向图,每次可以从任意一棵树选择一条边删掉,然后该树不与根(为 \(1\) )联通的部分被删掉.不能操作的人输.问谁有必 ...

  5. 洛谷4208 JSOI2008最小生成树计数(矩阵树定理+高斯消元)

    qwq 这个题目真的是很好的一个题啊 qwq 其实一开始想这个题,肯定是无从下手. 首先,我们会发现,对于无向图的一个最小生成树来说,只有当存在一些边与内部的某些边权值相同的时候且能等效替代的时候,才 ...

  6. Frida高级逆向-Hook Native(Java So)2

    Frida Hook So 一些操作说明 Native方法第一个参数是 JNIEnv *env 如何在Frida中获取 JNIEnv 对象呢? Java.vm.getEnv(); 如何将string类 ...

  7. 2020年09月15日-项目开发-python二次处理代码文件

    Caterpillar通过将BPMN生成为solidity代码后, 我需要对solidity代码做二次处理,即在其中的特定函数中插入event类型,以便去做事件监听. 最终生成的不仅包括solidit ...

  8. Windows系统安装Java步骤

    今天学习到Burp Suite的使用,提示到安装Burp Suite需要安装Java环境. 于是乎,本弱鸡开启了漫长的Java环境安装之路~ 一.Java SE版本众多,在这里推荐下载Java1.8版 ...

  9. 初学python-day3 元组

    day2 列表已更新!

  10. mall笔记

    介绍 SpringBoot.SpringCloud.SpringCloudAlibaba.Nacos.Sentinel.Seata整合demo. 软件架构 JDK 1.8 Spring Boot 2. ...