clion调试php扩展

调试原理:将父进程作为监听进程,子进程运行程序代码,这样所有的信号都需要经过父进程,所以也就可以控制调试了.
调试的必要的几个因素:
1. 有调试符号的可执行文件,类似  gcc -g aa.c出来的a.out
2. 能找到源码文件,也就是aa.c文件,php源码也是如此.
3. 满足以上两个条件,就可以顺利调试,理解这点很重要

只有自己亲手实践了,才知道是如此的简单。先理解如何愉快的调试,才是开发扩展的第一步,除非你不想深入学习。

  1. 下载好php源码包,然后编译安装debug版本的php。
  2. 写一个简单的扩展。
  3. 将扩展代码导入到clion中,记住只是扩展代码。
  4. 配置CMakeLists.txt文件,从php源码中导入。
  5. 配置gdb运行环境,deubg,跑起来

安装

sudo ./configure --prefix=/usr/local/php7_debug --enable_debug

生成扩展

sudo ./ext_skel --extname=lion

clion导入扩展源码

clion->import project from sources
这里写图片描述

这里写图片描述

引入php源码当中的头文件

cmake_minimum_required(VERSION 3.7)
project(lion)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES
        lion.c
        php_lion.h)

add_executable(lion ${SOURCE_FILES})

#定义php源码路径,这里根据自己的真实路径来更改
set(PHP_SOURCE /usr/local/src/php-7.1.4)
#引入php需要的扩展源码,这里也是根据自己需要的来更改
include_directories(${PHP_SOURCE}/main)
include_directories(${PHP_SOURCE}/Zend)
include_directories(${PHP_SOURCE}/sapi)
include_directories(${PHP_SOURCE}/pear)
include_directories(${PHP_SOURCE})

add_custom_target(makefile COMMAND sudo /usr/local/phpdebug/bin/phpize && ./configure --with-php-config=/usr/local/phpdebug/bin/php-config &&  make
        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})

clion配置中如此设置

这里写图片描述

好了,跑吧,让程序乖乖的停在任意断点.

如何调试php源码呢?

这里写图片描述

这里写图片描述

这里写图片描述

vscode调试php内核

vscode是一个非常轻量级的编辑器,微软的良心之作,今天就用他来开发和调试php的内核或者扩展非常的方便。

  1. 安装c/c++插件
  2. 配置lanunch.json和tasks.json

这里写图片描述

这里写图片描述

launch.json

{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "php_core_haha",
            "type": "cppdbg",
            "request": "launch",
            "program": "/usr/local/phpdebug/bin/php",
            "args": ["/Users/lion/wwwroot/php/aa.php"],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb",
            "preLaunchTask": "php_ext_task"
        }
    ]
}

tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "taskName": "php_ext_task",
            "type": "shell",
            "command": "cd /usr/local/src/php-7.1.4/ext/lion && sudo /usr/local/phpdebug/bin/phpize && ./configure --with-php-config=/usr/local/phpdebug/bin/php-config && make",
            "problemMatcher": [
                "$gcc"
            ]
        }
    ]
}

成功后图片
这里写图片描述

这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值