用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行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值