一、开启

查看是否开启 core dump 输出

ulimit -a

打开 core dump 文件记录

ulimit -c unlimited

yum install gdb php-dbg

关闭 core dump 文件记录

ulimit -c 0

设置内核core dump出来的存放路径(注意目录要有权限给php写):

echo "/tmp/core.%e.%p.%t" > /proc/sys/kernel/core_pattern

二、调试

1、准备 .gdbinit 文件

2、用 gdb 打开 core 文件

gdb php-fpm -c core-php-fpm.920

可以看到类似下边的字样:

Core was generated by `php-fpm: pool www '.

Program terminated with signal 11, Segmentation fault.

3、查看 core 发生时刻的堆栈

(gdb) bt

#0 zend_mm_alloc_small (size=) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:1295

#1 zend_mm_alloc_heap (size=) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:1366

#2 _emalloc (size=) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:2450

#3 0x00007f7a6fad0511 in apm_sprintf (fmt=0x7f7a6faeff50 "\n %04d-%02d-%02d %02d:%02d:%02d Version %s\n Process %d received signal %2d: %s , bss[%p]\n")

at /PHP/64/source/php7.0.0_nzts/ext/apm/apm_common.c:371

#4 0x00007f7a6facbefd in print_backtrace (sig=11) at /PHP/64/source/php7.0.0_nzts/ext/apm/apm.c:1937

#5 0x00007f7a6facbfd7 in agent_fatal_signal_handler (sig=11) at /PHP/64/source/php7.0.0_nzts/ext/apm/apm.c:1955

#6

#7 zend_mm_alloc_small (size=) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:1295

#8 zend_mm_alloc_heap (size=) at /usr/src/debug/php-7.0.6/Zend/zend_alloc.c:1366

4、引入 PHP 源代码中提供的 .gdbinit (gdb 命令编写脚本)

(gdb) source /root/.gdbinit

5、查看 backtrace 和变量值

(gdb) zbacktrace

[0x7f7a75e138c0] C("DEBUG") /usr/share/nginx/html/smartphp/common.php:28

[0x7f7a75e137d0] Model->_connectDb() /usr/share/nginx/html/smartphp/core/Model.class.php:44

[0x7f7a75e13680] Model->bindData("SELECT\40tips\40FROM\40keyword_phone\40WHERE\40word=:word", array(1)[0x7f7a75e136f0], "getdata") /usr/share/nginx/html/smartphp/core/Model.class.php:143

[0x7f7a75e13580] Model->getData("SELECT\40tips\40FROM\40keyword_phone\40WHERE\40word=:word", array(1)[0x7f7a75e135f0]) /usr/share/nginx/html/smartphp/core/Model.class.php:215

[0x7f7a75e134c0] Model->getField("SELECT\40tips\40FROM\40keyword_phone\40WHERE\40word=:word", array(1)[0x7f7a75e13530]) /usr/share/nginx/html/appdata/smartphp/core/Model.class.php:264

(gdb) print ((zval *)0x7f7a75e13530)

$1 = (zval *) 0x7f7a75e13530

(gdb) printzv $1

[0x7f7a75e13530] (refcount=3) array: Packed(1)[0x7f7a75e94888]: {

[0] 0 => [0x7f7a75e6ad88] (refcount=4) string: PP红包。

}

php core,使用 gdb 调试 PHP core相关推荐

  1. linux core文件GDB调试方法

    一.如何使用core文件 1. 使用core文件 在core文件所在目录下键入: gdb -c coreXXX 它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此 ...

  2. linux c++ 程序运行core,gdb调试显示cannot access memory at address

    如题,在linux环境写的c++程序,运行时core了,gdb调试core文件显示:cannot access memory at address 参考了:GDB调试,遭遇"cannot a ...

  3. C++ CORE DUMP gdb 调试

    先查看内存转储的大小限制: ulimit -c 返回的结果是以512 bytes为单位的. 如果没有返回结果,说明设置为0,需要进行手动设置:ulimit -c unlimited 测试代码: #in ...

  4. Linux环境崩溃生成core文件以及调试

    Windows环境崩溃问题可根据vs调试工具查看,Linux同样可以查看调用堆栈的信息,只是 需要更改Linux设置,使程序崩溃时候产生core文件.然后gdb调试即可. 1产生core文件方法 产生 ...

  5. 用gdb调试core dump文件

    gdb基本的使用方法在此就不说了. 载入core文件的命令行为: dgb exe core 例如 gdb ./testall ./core.2345 最重要的一个命令是where,这个就像windbg ...

  6. gdb 调试命令的使用及总结

    GDB: The GNU Project Debugger:http://www.gnu.org/software/gdb/documentation/ 参考:http://www.jianshu.c ...

  7. gdb 调试_一文入门Linux下gdb调试(二)

    点击"蓝字"关注我吧 作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述     今天我们介绍一下core dump文件,Core dum ...

  8. 【C++之GDB调试】GDB调试从入门到精通

    GDB作为经典的调试系统,这里记录它的原理和实践. GDB概述 GDB是什么 GDB是GNU开源组织发布的一个强大的UNIX/Linux下的程序调试工具,支持多种语言. 编译程序 "-g&q ...

  9. linux gdb网络调试,一文入门Linux下gdb调试(二)

    本文转载自[微信公众号:羽林君,ID:Conscience_Remains] 总述 今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快 ...

最新文章

  1. Linux(9)用户、组和权限管理
  2. 【一】Drupal 入门之新建主题
  3. php与mysql手册下载地址_PHP与Mysql的连接
  4. 菜鸟教程c语言题目,C 练习实例40
  5. 面试宝典系列-Mysql索引的区别
  6. matlab画图(plot)命令。长期更新!
  7. 让openkore 更节省你的CPU和内存
  8. 同一网络俩台计算机连接,两台电脑连接同一个wifi算是局域网么
  9. 14期 《心有猛虎 细嗅蔷薇》5月刊
  10. Java设计模式大全
  11. CF-Predictor安装教程
  12. HTTP/HTTPS
  13. 健康人寿保险服务平台
  14. 说一下HashMap的实现原理
  15. 织梦插件-织梦插件大全-免费织梦插件大全
  16. docker for windows使用
  17. 淘宝自然搜索机制排名原理介绍,如何做好店铺商品自然搜索排名?
  18. Python基础-list和tuple使用
  19. 【兴趣书签】类似《看不见的客人》的惊悚电影推荐
  20. 模块化多电平变换器MMC(交流380V-直流800V整流)仿真,动稳态性能良好

热门文章

  1. 一条长达两个多小时的视频,感谢20万名B站用户
  2. Paddle Inference和Paddle Serving
  3. 目前最流行的开发模式DevOps究竟是什么鬼?
  4. sweetalert2加载弹窗定时自动关闭显示剩余时间
  5. 被命运之神眷顾的法拉第
  6. 歇后语的趣味生活场景,笑料不断
  7. cccccc讽德诵功
  8. java保留两位小数四舍五入_关于java 四舍五入使java保留2位小数示例讲解
  9. 两部电影和数不清的认识到,离开这个浏览器秕
  10. Deepin系统安装微信、QQ等exe文件攻略