『PHP内核』Windows系统vscode调试PHP 7内核底层源码环境搭建

前言

根据自身环境依照下文准备资源,本文选取:

  • PHP源码(php-7.2)
  • PHP SDK(phpsdk-vs16-x86.bat)
  • 调试用IDE(vscode)

目录结构:
在这里插入图片描述

资源准备

php-src

首先需要php源码,根据所需要选择版本

php/php-src(github.com)

版本切换选择branch
在这里插入图片描述

php sdk

sdk用于构建php

microsoft/php-sdk-binary-tools(github.com)

windows.php.net - /downloads/php-sdk/

github仓库有vs14-vs16三个版本的sdk,第二个是低php版本的sdk下载地址
在这里插入图片描述
对应选择vc版本查询见下文链接

PHP: internals:windows:stepbystepbuild_sdk_2

如果忽略版本,直接选用最新的phpsdk-vs16.bat会报fatal error,由于向下兼容并无影响

调试用IDE

IDE选择vscode,需要安装c/c++扩展
在这里插入图片描述

源码编译

进入php-sdk-binary-tools,运行phpsdk-vs16-x64.bat(根据系统条件选择),正常运行会进入shell
在这里插入图片描述
cd进入php的源码目录../php-src-PHP-7.2,使用以下命令更新、下载相关依赖组件

phpsdk_deps --update --branchmaster

中途报错可以忽略,由于vs16支持向下兼容
在这里插入图片描述
运行buildconf.bat,生成configure.js

buildconf.bat

生成configure后,可以使用--help查看参数
在这里插入图片描述
选择开启SAPI cli、开启debug模式、开启phar扩展;由于cli是单线程的,方便接下来的调试。然后运行configure

configure --disable-all --enable-cli --enable-debug --enable-phar

运行后会显示一些php的配置信息
在这里插入图片描述
无误后使用nmake执行build,build过程可能会有众多warning,提示complete完成build
在这里插入图片描述
之后在php源码目录中的x64/Debug_TS就生成了php.exe
在这里插入图片描述
测试
在这里插入图片描述

源码调试

使用vscode打开之前的php源码目录
在这里插入图片描述
这里我选择把待调试的php放在x64/Debug_TS、也就是php.exe相同目录下
在这里插入图片描述
然后要把php文件关闭了才能进入c++调试,否则进入的是php调试

菜单Run->Start Debugging或F5开启调试,选择第二个C++(Windows)
在这里插入图片描述
然后会生成调试的配置文件.vscode/launch.json,修改它

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "php-7.2 source code debugger",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/x64/Debug_TS/php.exe",
            "args": ["test.php"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/x64/Debug_TS/",
            "environment": [],
            "console": "externalTerminal"
        }
    ]
}

在这里插入图片描述
然后打开sapi\cli\php_cli.c,在程序入口main函数打断点
在这里插入图片描述
启动调试即可
在这里插入图片描述
入口函数的头文件引用缺失不影响调试,这些报错都不需要理会
在这里插入图片描述

欢迎在评论区留言

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值