我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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


一、 工具清单

  • PHP7.1.10
  • GDB
  • Clion

二、 源码下载及安装

关于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

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

本文主要介绍分析源码的方式,其中包含环境的搭建、分析工具的安装以及源码调试的基本操作。一、 工具清单PHP7.1.10GDBClion二、 源码下载及安装关于php源码的下载和安装这里就不进行赘述三、 GDB的安装与调试3.1 安装GDB的
如何使用Clion搭建PHP源码调试环境
2024-02-27

linux php调试环境如何搭建

这篇文章主要讲解了“linux php调试环境如何搭建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux php调试环境如何搭建”吧!linux php调试环境的搭建方法:1、下载安装
2023-06-22

VSCode 搭建 x264 源码调试环境的详细步骤

这篇文章主要介绍了VSCode 搭建 x264 源码调试环境的详细步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-11-13

如何用源码方式搭建LNMP环境

这篇文章主要讲解了“如何用源码方式搭建LNMP环境”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用源码方式搭建LNMP环境”吧!源码方式搭建LNMP环境1、安装 RedHat8Cento
2023-07-05

如何搭建X86汇编调试环境

这篇文章将为大家详细讲解有关如何搭建X86汇编调试环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。汇编环境搭建本次使用vscode搭建的,需要的插件有X86 and X86_64 Assembly(也可
2023-06-25

如何使用 CLion 开发调试 PHP 扩展

本文主要介绍如何使用 IDE Clion 来开发调试PHP扩展。一、 创建PHP扩展php 扩展的创建这里就不再赘述,使用ext_skel 生成一个框架,然后编辑相应的文件,编译安装,最后在php.ini 配置文件中加入生成的扩展 例如 m
如何使用 CLion 开发调试 PHP 扩展
2024-02-27

如何用vscode搭建php环境

本篇内容介绍了“如何用vscode搭建php环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:安装PHP要在VS Code中搭建PH
2023-07-05

PHP如何用gdb调试源码

这篇文章主要介绍了PHP如何用gdb调试源码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP如何用gdb调试源码文章都会有所收获,下面我们一起来看看吧。php编译时有一个debug模式,这个模式会关闭内存优
2023-07-04

如何搭建RocketMQ在本地IDEA开发调试环境

今天小编给大家分享一下如何搭建RocketMQ在本地IDEA开发调试环境的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言发
2023-06-29

如何使用docker搭建kafka环境

这篇文章主要介绍“如何使用docker搭建kafka环境”,在日常操作中,相信很多人在如何使用docker搭建kafka环境问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用docker搭建kafka环境
2023-06-19

如何使用eclipse搭建Swt环境

本篇内容主要讲解“如何使用eclipse搭建Swt环境”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用eclipse搭建Swt环境”吧!一、查看当前使用的eclipse 版本型号在exlp
2023-06-22

在VSCode中如何搭建Python开发环境并进行调试

本篇内容介绍了“在VSCode中如何搭建Python开发环境并进行调试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、安装PythonPy
2023-07-01

CentOS7上如何使用pyenv搭建Django环境

这篇文章主要介绍CentOS7上如何使用pyenv搭建Django环境,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、pyenv是什么?能做什么?pyenv是一个forked自ruby社区的简单、低调、遵循UNIX
2023-06-25

如何使用VirtualBox和Vagrant搭建Linux环境

本篇内容介绍了“如何使用VirtualBox和Vagrant搭建Linux环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、确定电脑的C
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录