`
xuela_net
  • 浏览: 513541 次
文章分类
社区版块
存档分类
最新评论

用GDB调试PHP扩展

 
阅读更多
扩展编译好用,通过php编码测试报“段错误",如果是c语言都是用gdb进行设置,那PHP扩展要如何进行调试呢?搜索了下,虽然是php扩展但是core是php 的core不是单个so扩展的coredump
这里使用ulimit -c unlimited来开启core文件,使用gdb来对core文件进行调试演示一下。
root@debian:~/php# php a.php 
段错误
root@debian:~/php# ulimit -c unlimited 
root@debian:~/php# php a.php 
段错误 (core dumped)
root@debian:~/php# ls
a.php  core
root@debian:~/php# apt-get install gdb
root@debian:~/php# gdb php -c core 
Core was generated by `php a.php'.
Program terminated with signal 11, Segmentation fault.
#0  0xb6a7bfb8 in zif_smtpmail_connect (ht=5, return_value=0xb6f149dc, return_value_ptr=0x0, this_ptr=0x0, return_value_used=1) at /root/php/php-5.4.7/ext/smtpmail/smtpmail.c:281
281             if(strcmp(substring(lastmessage, 1, 3), hen) !=0 || strlen(lastmessage)==0) {
(gdb) 

(gdb) source ./php-5.4.7/.gdbinit 
(gdb) zbacktrace 
[0xb6efb030] smtpmail_connect("smtp.qq.com", "xxxx", "xxx", "xxxx@qq.com", 25) /root/php/a.php:5 

从上面可以看出报错的是smtpmail.c文件的281行,php调用处是a.php的第5行。
分享到:
评论

相关推荐

    使用GDB调试PHP代码,解决PHP代码死循环问题

    在本文中,我们将深入探讨如何使用GDB调试PHP代码,特别是在遇到PHP代码死循环问题时。在实际开发中,死循环可能导致服务器资源消耗过大,甚至崩溃。以下是一步步解决这个问题的方法。 首先,我们看到问题起源于一...

    如何使用GDB调试PHP程序

    然而,如果你在PHP扩展开发中或者使用像Xdebug这样的调试工具,可以通过GDB调试PHP的底层C扩展。 对于普通的PHP应用,可以使用Xdebug配合IDE(如PHPStorm)进行调试,Xdebug提供了断点、变量查看、调用堆栈等功能,...

    cygwin windown php扩展开发工具

    PHP扩展是用C语言编写的,它们通过ZEND引擎与PHP内核交互,提供新的功能或者增强已有功能。使用Cygwin,开发者可以在Windows系统上构建这些C扩展,而无需安装完整的Linux环境。以下是一些使用Cygwin进行PHP扩展开发...

    PHP扩展开发中文教程_PHP扩展开发中文教程_源码

    在IT领域,PHP扩展开发是一项高级技能,它允许开发者深入到PHP引擎的底层,使用C语言来编写自定义的功能模块,从而实现对PHP功能的增强或优化。本教程聚焦于PHP扩展开发,旨在帮助读者掌握如何创建自己的PHP扩展,...

    PHP扩展开发及内核应用

    8. **调试和测试**:了解如何使用GDB、Xdebug等工具调试C代码,以及如何编写单元测试确保扩展的正确性。 这本书还可能涉及一些高级话题,如: - **内存池**:如何使用内存池优化内存分配和释放,减少碎片和提高...

    cmake方式开发php扩展

    首先,理解PHP扩展的本质:它们是用C或C++编写的库,与PHP解释器交互,提供了新的数据类型、函数和行为。CMake作为构建工具,允许我们以一致的方式管理这些扩展的编译和链接过程,无论是在Linux、Windows还是macOS等...

    简单高性能优雅的phpc扩展框架

    5. **调试和优化**:通过`gdb`、`phpdbg`等工具进行调试,确保代码正确无误,并针对性能进行优化。 总之,"简单高性能优雅的phpc扩展框架"为PHP开发者提供了一种提升应用性能和编写高效代码的方式,通过掌握和使用...

    Linux/FreeBSD下用C语言开发PHP的so扩展模块例解

    PHP扩展是用C语言编写的动态链接库(.so文件),它们提供了PHP解释器无法原生支持的新功能或性能优化。通过扩展,我们可以增加新的数据类型、函数、类或甚至改变PHP的内部行为。 开发PHP扩展涉及以下关键步骤: 1....

    bped, PHP 扩展开发入门(Beginning PHP Extension Development).zip

    10. **调试和测试**:学习如何使用GDB、Xdebug等工具调试C扩展,并编写测试脚本来验证扩展的功能。 11. **发布和社区贡献**:了解如何将你的扩展开源,参与PHP社区,获取反馈并持续改进。 通过《bped》的学习,你...

    PHP实例开发源码-NNABC (PHP扩展).zip

    5. **测试与调试**:创建测试脚本,使用`php -d extension=nnabc.so script.php`运行扩展,使用`var_dump`等函数检查输出,或者使用GDB等工具进行调试。 6. **错误处理和日志记录**:查看源码中是如何处理错误和...

    java c++ PHP c# 代码快速调试工具

    3. **PHP 调试**:PHP的调试工具包括Xdebug,它是一款扩展,可以与IDEs集成,提供断点、变量跟踪等功能。此外,PHP的错误报告和var_dump()函数也是调试的基础手段。 4. **C# 调试**:C#的调试主要依赖于Visual ...

    php调试工具ydb.zip

    ydb 是像gdb一样的php调试工具,用扩展实现,可以在运行过程中查看变量值,也可以进行性能测试,而不用对源代码进行任何更改,就像xdebug和xhprof 中提供的功能,但使用更方便  ydb也可以称为一个在线调试工具,...

    up_427582_phpext_ov2556.rar

    6. **错误处理与调试**:调试PHP扩展通常使用GDB、Xdebug等工具,需要掌握相应的调试技巧。 7. **前端渲染技术**:了解如Smarty、Twig等PHP模板引擎的工作原理,以及如何在自定义扩展中实现类似的功能。 8. **性能...

    Extending.and.Embedding.PHP

    这包括使用GDB、Xdebug等工具,以及编写测试用例。 4. 嵌入PHP:理解如何在非Web环境中启动和使用PHP解释器,如在C/C++程序中调用PHP脚本,实现混合编程。 5. 高级话题:探索更复杂的主题,如线程安全、错误处理、...

    PHP调用C/C++生成的.so库的详细笔记

    使用gdb或valgrind等工具进行更深入的调试和性能分析。 此外,还可以使用一些辅助工具,如SWIG(Simplified Wrapper and Interface Generator),它可以帮助自动生成PHP与C/C++之间的绑定代码,简化上述过程。另外...

    php-8.1.4-Win32-vs16-x64

    PHPDBG是PHP的内置命令行接口(CLI)调试器,它提供了类似于GDB的功能,可以用于分析和调试PHP脚本。 2. **snapshot.txt**:可能包含了编译时的快照信息,用于记录构建过程中的状态或配置细节。 3. **...

    up_47600_phpext_iiedb4.rar

    10. **测试与调试**:编写测试用例,使用`phpunit`等工具进行单元测试,以及如何使用`gdb`或`xdebug`进行调试。 掌握这些知识点,开发者可以创建出满足特定需求的PHP扩展,进一步增强PHP的功能和性能。对于那些想要...

    FirePHP 推荐一款PHP调试工具

    如果你对 FirePHP 感兴趣,可以查阅更多相关文章,如如何使用 FirePHP 调试 PHP,Xdebug 的安装与配置,以及使用 GDB 调试 PHP 代码等,这些资料能帮助你更深入地掌握 PHP 的调试技巧。 总之,FirePHP 是 PHP ...

    PHP Extension Writing之中文版.docx

    - **调试技巧**:学习如何调试扩展中的问题,使用 gdb 等工具进行故障排查。 #### 编写扩展 III:资源 ##### 资源管理 - **概念**:资源是 PHP 中用来表示外部资源的对象,例如数据库连接或文件句柄。 - **生命...

    php-7.3.10-Win32-VC15-x64.zip

    7. **php7phpdbg.dll**:这是PHP的调试器PHPDBG的动态链接库,用于源代码级调试PHP应用程序,提供类似GDB的交互式控制台。 8. **libsodium.dll**:这是一份Sodium加密库的实现,提供了现代、安全的密码学函数,用于...

Global site tag (gtag.js) - Google Analytics