文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Clion搭建PHP源码调试环境

2024-02-27 20:00

关注

本文主要介绍分析源码的方式,其中包含环境的搭建、分析工具的安装以及源码调试的基本操作。


一、 工具清单


二、 源码下载及安装

关于php源码的下载和安装这里就不进行赘述


三、 GDB的安装与调试

3.1 安装

GDB的安装就不介绍

3.2 调试

创建php文件: index.php


<?php
    echo "Hello world!";
?>

打开gdb


$ gdb php # 将显示如下内容
GNU gdb (GDB) 8.3
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin18.5.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from php56...
(gdb)

调试创建的php文件


# 断点main函数
(gdb) b main
Breakpoint 1 at 0x1007123f0: file sapi/cli/php_cli.c, line 1215.
(gdb) run index.php
Starting program: /usr/local/bin/php56 index.php
[New Thread 0x1a03 of process 81529]
[New Thread 0x2803 of process 81529]
[New Thread 0x2703 of process 81529]
Thread 3 hit Breakpoint 1, main (argc=2, argv=0x7ffeefbff8f0) at sapi/cli/php_cli.c:1215
warning: Source file is more recent than executable.
1215        int exit_status = SUCCESS;
(gdb) next
1216        int module_started = 0, sapi_started = 0;
(gdb)

经过上面的步骤就可以使用GDB进行PHP源码的调试了。


四、CLion的配置与调试

4.1 配置

打开clion,选中菜单栏中的 File-> New Cmake project from Source... , 选择下载的源码包。

注意: 这里选择的源码包是要使用 configure 配置过的。

Clion搭建PHP源码调试环境创建项目与配置
在导入源码的过程中,这里使用默认的选择就可以。
导入源码之后,打开项目根目录的CMakeLists.txt,将该文件的代码替换为下面的内容,注意版本和源码目录要根据实际位置进行调整。


cmake_minimum_required(VERSION 3.15)
project(makefile)

set(CMAKE_CXX_STANDARD 14)

set(PHP_SOURCE /Users/mihuan/workspace/c/php-7.1.10)
include_directories(${PHP_SOURCE}/main)
include_directories(${PHP_SOURCE}/Zend)
include_directories(${PHP_SOURCE}/sapi)
include_directories(${PHP_SOURCE}/pear)
include_directories(${PHP_SOURCE}/TSRM)
include_directories(${PHP_SOURCE})

add_custom_target(makefile COMMAND make && sudo make install WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})

完成后,要重新加载该文件的内容(CLion 会有提示,可以选择自动重载)。 然后打开菜单栏 Run->Edit Configurations... , target 选择 makefile(这里要和CMakeLists.txt中的project(makefile) 一致); Executable 选择PHP的可执行二进制程序;Program arguments填写要执行的脚本文件(php文件,如上面GDB调试的时候所用的index.php);Working Directory填写要执行的脚本文件的存放目录。
CLion搭建PHP源码环境配置执行命令

4.2 调试

上面配置完成之后,我们来验证一下配置是否成功。先在工作目录(上面填写的Working Directory)中创建index.php。


<?php
    echo "Hello world!";
?>

回到CLion,打开sapi/cli/php_cli.c文件,在main函数里设置断点,如下图
Clion搭建PHP源码调试环境打断点
然后点击菜单Run->Debug makefile,等待编译完成后,若出现下图就说明我们的努力有了回报。
CLion搭建PHP源码环境断点运行

说明1: 在CMakeLists.txt中,最后一段代码中使用了... sudo make install ...。因为我的是Mac系统,将PHP安装到/usr/local 下面需要使用sudo。如果有权限可以不使用sudo。

说明2: 在配置CLion的过程Run->Edit Configurations...中,Executable 需要选择PHP的可执行二进制程序。如果使用的是Mac的,并且我们的php是安装在/usr/local/(假设是/usr/local/php) 下,那么二进制程序是不能被选择的到的。因为CLion是不能进入类似 /usr/local;/usr/lib;/etc ... 等这类目录中的。所以我们需要在我们的“家”目录中选择一个地方创建一个软链接(如:/Users/jiyi/workspace/bin) 代码如下:


$ sudo ln -s /usr/local/php/bin/php ~/workspace/bin/php

然后选择~/workspace/bin/php 即可。

说明3: 上面CMakeLists.txt 中有下面一段代码


add_custom_target(makefile COMMAND make && sudo make install WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})

如果PHP已经编译安装完成之后,就可以不再需要 COMMAND make && sudo make install 了,它的功能是每次在CLion中点击运行/调试的时候都会先运行这两个命令——makesudo make install。这样的话每次都要重新编译和安装,最恼人的是mac系统还需要每次输入用户密码,很麻烦。所以说PHP安装完成之后这部分可以去掉,形式如下


add_custom_target(makefile WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯