php内核学习-安装可以gdb调试的php遇到的问题

深入了解PHP:用gdb调试源码 作者:bobyzhang,腾讯 IEG 运营开发工程师php编译时有一个debug模式,这个模式会关闭内存优化,提示内存泄露,屏蔽调用栈优化可以让我们看到完整的php c层面的调用栈。通常... 阅读详情
  1. 加压php包,指定安装路径
tar  xvf  php-7.1.29.tar.gz
cd php-7.1.29
./configure  --prefix=/opt/projects/php7.1
  1. 为了gdb可以调试php需要修改一下makefile文件相关配置,
    在这里插入图片描述
CC = cc -ggdb3 -fkeep-inline-functions
CFLAGS_CLEAN = -I/usr/include -ggdb3 -O0 -fkeep-inline-functions -Wall -DZEND_SIGNALS $(PROF_FLAGS)
CXXFLAGS = -g -O0 -prefer-non-pic -static $(PROF_FLAGS)
CXXFLAGS_CLEAN = -g -O0
DEBUG_CFLAGS = -Wall -g -O0

不想手动修改configure文件,可以在./configure运行时添加 --enable-debug参数

  1. 修改完makefile,然后安装
make && make install
  1. 如果顺利,就会安装成功,但有时候会编译失败,提示 undefined reference to ‘libiconv’, (谷歌翻译:未定义的引用’libiconv’),百度一下发现是这个问题是没有链接某些基础库,所以这个问题的解决思路有了,编译时添加上该库。
    在这里插入图片描述
  2. 再次编辑makefile文件,找到一个叫做:EXTRA_LIBS的变量名,添加一下 之前缺失的库 -liconv
    在这里插入图片描述
  3. 再次make 一下,发现编译通过了。
如何使用GDB调试PHP程序 一般来说,GDB主要完成下面四个方面的功能: (1)启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 (2)可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) (3)当程序被停住时,可以检查此时你的程序中所发生的事。 (4)动态的改变你程序的执行环境。 1、简介 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。同时GDB也具有例如ddd这样的图形化的调试端。 2、调试C/C++程序 直接上代码了 #include<iostrea 立即下载

相关推荐

STM32F103+W5500网络通信

STM32F103+W5500网络通信一、W5500模块(一)W5500以太网模块介绍(二)模块排针功能表二、 modbus协议(一)modbus协议原理(二)Modbus 通讯方式1.Modbus三种通讯方式2.在Modbus网络上传输3.以太网(modbus tcp/ip)三、参考资料 一、W5500模块 (一)W5500以太网模块介绍 D-W5500 EVB以太网模块是一款基于WIZnet W5500芯片的以太网模块,且性价比高的以太网模块。W5500是一款全硬件TCP/IP嵌入式以太网控制器,为

”一只特立独行的猪“的博客 1万+

如何开发PHP扩展调试,02PHP编译运行调试

## 下载php源代码* 官网下载:https://secure.php.net/downloads.php* 或GITHUB:git clone http://github.com/php/php-src---## 配置选项讲解:`./configure --help | less`使用`--enable-NAME`和`--disable-NAME`开关编译哪些扩展和SAPI .如果扩展或SAP...

weixin_42641385的博客 342

LSCM最小二乘保角参数化

LSCM最小二乘保角参数化 最小二乘思想 已知一组点的数据(x,y) x x1x_1x1​ x2x_2x2​ x3x_3x3​ … xnx_nxn​ y y1y_1y1​ y2y_2y2​ y3y_3y3​ … yny_nyn​ 可以近似为线性关系 y=ax+by=ax+by=ax+b ,目标为确定常数 aaa , bbb ; 解法:找到 aaa , bbb ,使得所有 yiy_iyi​ 与 axi+bax_i+baxi​+b 偏差的平方和 Q=∑i=1n(yi−axi−b)2 Q=\s

weixin_49732532的博客 4252

使用 gdb 调试 PHP 扩展

php的扩展使用c/c++开发,可以很容易的使用gdb进行调试。具体步骤如下:首先编译php的时候需要加上** --enable-debug**参数 ./configure --enable-debug make && make install 在我的ubuntu机器上面测试,扩展的目录默认为/usr/local/lib/php/extensions/debug-non-zts-20

Technology world 3719

从零搭建ECG心电图仪:模拟前端电路设计与噪声对抗实战

在电子工程和生物医学信号处理领域,微弱信号的采集与放大是核心挑战。其基本原理在于利用高精度模拟电路,从强大的环境噪声中提取出有用的差分信号。这项技术的核心价值在于将理论上的传感器信号转化为稳定、可靠的可用数据,是连接物理世界与数字系统的关键桥梁。在医疗监护、工业传感和科学测量等场景中,高性能的模拟前端设计直接决定了整个系统的精度与可靠性。本文聚焦于生物电信号采集这一具体应用,深入探讨如何运用差分放大器、低通滤波器和陷波滤波器等经典模块,构建一个能够有效对抗工频干扰和接触噪声的实用电路,最终实现从人体体表清晰

weixin_30616969的博客 458

WRF-BEM相关参数说明

本参数适用于WRF-BEM模拟武汉市气候。

m0_60013472的博客 1896

php扩展调试,调试PHP扩展

源码安装PHP时需要构建调试版本./configure --prefix=/usr/local/php5 --enable-debug --enable-maintainer-zts --enable-cgi --enable-cli --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-confi...

weixin_28695537的博客 391

银行客户投诉预测模型优化

在实际操作中,银行可以使用这个优化后的模型来识别那些可能引起客户不满的因素,并采取预防措施。例如,如果模型表明退款金额是一个很强的预测因子,银行可能会审查其退款政策,以确保它对客户是公平和透明的。在银行业务中,客户投诉是一个重要的指标,它直接关系到客户满意度和银行服务质量。某一个指标,比如:退款金额,本文假设退款金额对于预测投诉的权重应该高于赔偿金额。在每次迭代中,本文使用当前的权重组合来训练模型,并计算在测试集上的准确率。的可能值来搜索最佳的权重组合,并输出最佳准确率及对应的权重。来寻找最佳的权重组合。

weixin_57499254的博客 1707

PHP内核分析之GDB使用(一)

1.PHP源码下载和安装 https://github.com/php/php-src/releases $ ./configure --prefix=/usr/local/php7 --enable-debug --enable-fpm $ make && sudo make install 2.环境工具介绍 CENTOS 7.2 PHP-7.4.1 G...

tiancityycf的专栏 954

用ESP32-S3和USB摄像头DIY一个无线图传监控(附完整代码和接线图)

本文详细介绍了如何利用ESP32-S3开发板和USB摄像头打造一套高性价比的无线图传监控系统。从硬件选型、接线图到代码实现,提供了完整的DIY方案,特别适合家庭监控、宠物看护等场景。通过优化WiFi传输和双核任务分配,实现了稳定的视频流传输,整套方案成本控制在200元以内。

weixin_33701251的博客 519

使用CloudCompare和CANUPO进行点云分类的编程指南

在本文中,我们将介绍如何使用CloudCompare和CANUPO库进行点云分类的编程。CloudCompare是一款功能强大的开源点云处理软件,而CANUPO是一个用于点云分类和分割的C++库。这只是一个简单的点云分类示例,CANUPO库还提供了其他更高级的功能和算法,以满足各种点云分类需求。该函数接受点云数据、地面点掩码和非地面点掩码作为输入,并将分类结果存储在这两个掩码向量中。完成安装后,我们可以开始编写点云分类的代码。最后,我们遍历点云数据,并根据地面点和非地面点的掩码将结果打印出来。

ByteWhisper的博客 1058

用gdb调试php程序

 有一个php程序,命令行执行时如下:[root@h10-vm08 demo]#  php ParseFile.php xxxx.ykml   *** glibc detected *** free(): invalid pointer: 0xb7869b7c ***Aborted[root@h10-vm08 demo]#  这个php程序调用的php extension的so文件

北冥之鱼的blog 8252

用urdf给自己的ROS小车编写模型

3.3 使用urdf编写自己的ROS小车模型 3.3.1 常见的ROS小车结构有哪些? 下面就是常见的ROS小车,相信在大家的脑海里已经有了自己小车的样子,下面我和大家一起使用urdf对ros小车建模。 这里只对urdf进行简单介绍,然后就带大家使用urdf最基础的标签,建立机器人的urdf机器人模型。关于更多细节,请参看官网:http://wiki.ros.org/urdf/Tutorials 3.3.2 什么是urdf?建模的原因? 什么是urdf? URDF(Unified Robot Descri

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

PHP内核调试学习环境配置

工欲善其事必先利其器PHP的编译与安装下载源代码并解压编译前配置编译、测试和安装Vim及其相关插件配置Ctags的安装TagList的安装与配置NERDTree的安装使用Vim查看PHP源代码用GDB调试PHP程序 PHP的编译与安装 基于PHP 7.1的版本。具体步骤如下: 下载源代码并解压 [root@bogon src]# pwd /usr/local/src [root@bogon...

u010269726的博客 498

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

fedora17下用gdb和bochs调试linux-0.11内核

买了本赵炯博士>,开始学习内核源代码,首先就是动手搭建实验环境,所用操作系统为fedora17,首先下载安装bochs,root下用yum search bochs查看一下是否有bochs相关的安装包,发现有,则执行yum install bochs.i686,安装完毕。然后 根据www.oldlinux.org/oldlinux/viewthread.php?tid=3878中的步骤测试了htt

lmdyyh5722756的专栏 1780

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

QEMU + GDB 内核调试环境

QEMU + GDB 内核调试环境 基于ubuntu14.04 安装依赖库 apt-get install aptitude libssl-dev libpixman-1-dev flex bison m4 libncurses5-dev libssl-dev apt-get upgrade 编译内核 编译内核共两条命令: make menuconfig 此时需要注意两个选项: kern...

zzzpany的博客 308

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

linux内核调试指南

<br />http://blog.youkuaiyun.com/Hunnad/archive/2008/11/06/3242097.aspx<br /> <br />知识从哪里来<br />1. 永远不要忘记的三大帮助命令 <br />XXX -h(xxx –help)<br />man -a XXX<br />info XXX<br />2. 如何安装帮助文档 <br />$ sudo synaptic 界面出来后,在“组别”->“文档”选取你要的文档进行安装<br />或$ apt-cache search Do

黄仁军的专栏 8万+

使用gdb调试工具上手调试php和swoole源码

swoole作为php的核心项目,php和swoole都具有一定的研究价值,由于是c语言编写的项目,要上手进行调试,那么最好用的调试工具就是gdb了 这个gdb调试工具功能强大,支持的选项也是非常多,下面就总结出来常用的命令 编译源码添加调试信息 在编译时把调试信息编译进生成的二进制文件中,需要给gcc编译器加上-g参数,比如编译php的Makefile中是这样的 加上-g参数就已经有调试信息了...

weixin_33812433的博客 1166

qemu的安装与内核的调试初步

首先问qemu是什么? 在完成了linux3.0的编译工作之后,我们希望能对linux的内核进行调试,而qemu给我们提供了这样的环境。在网上看了一些介绍,感觉有点儿不明白,大体上说qemu是虚拟机性质的,但是虚拟机跟我们要进行的调试工作有什么关系呢?问了师兄,他的解释通俗易懂

SunnyBeiKe的专栏 4914

gdb调试php

#这些就可以让你看到一个很炫的界面了 sudo gdb /usr/local/phpdebug/bin/php run filepath info break break main focus 输入命令layout或者focus可以边看代码边执行,真是爽爆了加断点 : break filename:行号 break filename:函数名 查看断点信息 : info break 删除断

baixiaoshi的专栏 2216

【翻译】使用VMWare GDB和IDA调试Windows内核

自 http://bbs.pediy.com/showthread.php?t=135229 最近喜欢用IDA搞一些内核的东西,于是就到处找IDA关于内核方面的东东。这篇文章实在原文的基础上进行了一定的封装,也算是半原创的东东吧~希望大家不要拍砖撒~ VMWare的GDB调试器功能比较简单也比较基础,该调试器并不知道处理器和线程的任何信息(对于Windows系统),因而如果想要得到一些

crystal0011的专栏 3815

PHPBrew高级调试技巧:使用GDB和Valgrind分析PHP

PHPBrew是一个强大的PHP版本管理工具,它让你能够在个人目录中轻松构建和安装多个PHP版本。对于需要深入调试PHP应用程序的开发者来说,掌握GDB和Valgrind等高级调试工具是提升开发效率的关键。🚀 在PHPBrew的源码中,调试功能被深度集成。在[src/PhpBrew/VariantBuilder.php](https://link.gitcode.com/i/a4f6c35a1

gitblog_00722的博客 494

php core,使用 gdb 调试 PHP core

一、开启查看是否开启 core dump 输出ulimit -a打开 core dump 文件记录ulimit -c unlimitedyum install gdb php-dbg关闭 core dump 文件记录ulimit -c 0设置内核core dump出来的存放路径(注意目录要有权限给php写):echo "/tmp/core.%e.%p.%t" > /proc/sys/kern...

weixin_42601134的博客 519

PHP - 底层/内核 - 学习/实践

本文系统介绍了PHP底层实现原理的学习路径。主要内容包括:1)学习环境搭建(Windows/Mac/Linux);2)核心知识体系(Zend引擎、内存管理、变量实现等);3)扩展开发与性能优化技术;4)调试方法和实践项目建议。文档提供了详细的学习大纲、推荐资源和实践路线图,特别强调对PHP7/8内核改动的深入研究。同时展示了PCNTL扩展的进程管理实例,通过代码演示了多进程创建与等待的实现。学习过程需结合C语言基础、编译原理和计算机体系结构知识,建议从简单扩展开发入手,逐步深入内核机制研究。

"代码"的日常搬运 4476
上一篇: linux安装 composer
下一篇: sublime 安装扩展遇到的问题
龘麤三思
博客等级 码龄10年 11粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值