在之前一段时间触及PHP扩大开辟,对PHP源代码有调试需求,但是网上大部分都是在LINUX下调试的教程,WINDOWS体系下的异常少而且历程也只是大略一讲。所以决议本身尝试在WINDOWS下竖立调试环境,毕竟,道理是相通的:)。
1.预备
以下是我开辟机上的设置,能够和我保持一致削减由于东西版本而涌现分外题目的概率。
1.Visual Code源代码编辑调试东西 (引荐进修:vscode入门教程)
2.Visual Studio Community2017(VS平常都把WIN下开辟须要的东西都带全了,毕竟宇宙百口桶.....)
赤色标注地区必需装置
3.PHP7源代码(也能够挑选从github上拉取)
能够恣意挑选一个打包版本的源代码
4.PHP7-SDK
我的开辟机是64位,由于是编译PHP7所以挑选了64位的deps-7.1-vc14-x64(扩大依靠库包),竖立php-sdk-binary-tools文件夹,将php-sdk-binary-tools-xxx.zip解压至这个文件夹中,竖立deps-vc14-x64文件夹,也将deps-7.1-vc14-x64.7z解压至这个文件夹中。
同时将php-sdk-binary-tools中的bin途径增加到WINDOWS体系变量PATH中。deps-7.1-vc14-x64本文临时用不上,不过你也能够先下载下来,由于编译自带的一些扩大所依靠的库和头文件都包括在内里,当你要编译自带扩大的时刻能够用上:)。
2.编译源代码
装置VS后,运转在最先菜单里的Visual Studio 2017文件夹下的x64 Native Tools Command Prompt for VS 2017
运转后,进入到PHP7源代码目次中
1.实行buildconf.bat生成WIN下的configure文件(configure.js)
2.能够运转configure.bat --help检察支撑的编译参数
3.实行configure.bat --disable-all --enable-cli --enable-debug(为了树模简朴编译,能够自行增加参数)
4.实行nmake敕令最先编译
以本机的设置,编译完成后的实行文件在源代码目次中的x64/Debug_TS下,背面就能够预备最先调试了。
3.运用VSCODE调试
调试体式格局能够分2种,一种是附加历程调试,一种是运转启动调试,两种体式格局都邑引见,先引见运转启动调试。
先建立一个用于测试的php的源代码文件,我建立在源代码目次下的x64/Debug_TS里。
随后挑选菜单调试->翻开设置,并挑选C++(Windows)
末了将设置文件修正以下所示
我们之前编译了PHP SAPI的cli,我们翻开sapi/cli/php_cli.c源文件,定位到1197行的main函数内打上断点。
随后我们到VS的DEBUG控制面板运转调试即可。
随后即可看到断点掷中。
附加历程调试设置也是迥然不同,我们点击菜单选项调试->翻开设置,并挑选增加设置,在弹出来的挑选列表中挑选C/C++(Windows) Attach
末了的设置文件以下:
我们首先用PHP -S启动一个内置服务器(这个php肯定假如你编译生成的php.exe文件),来轻易演示附加历程调试,我启动的位置是在我们之前建立的test.php文件地点的目次下。
接见结果以下:
启动调试的体式格局一样,在VSCODE的调试面板内里挑选(Windows) Attach运转即可。
随后在弹出来的历程列表中挑选PHP历程后最先进入调试状况。
我们test.php中运用了array_push函数,我们此次到这个函数的完成中断点,翻开ext/standard/array.c,定位到2540行,打上断点。
随后在浏览器中接见http://127.0.0.1:8080/test.php 即可触发断点。
4.末了
本文的调试体式格局也能够作为扩大开辟的调试体式格局,固然,一样的设置思绪也适用于宇宙IDE Visual Studio,我在WINDOWS下设置VSCODE调试PHP源代码的思绪也适用于别的平台(Mac/Linux......)。