摘要:有时候,使用的第三方扩展之后,可能会发生一些错误,这个时候,可能就需要更底层的方式追踪调试程序发生错误的地方和原因,熟悉下编程的肯定不陌生首先,使用命令,查看系统是否会生成文件返回结果可能是当返回结果为时,说明系统不会生成文件,这个时候
有时候,使用PHP的第三方扩展之后,可能会发生一些错误,这个时候,可能就需要更底层的方式追踪调试程序发生错误的地方和原因,熟悉linux下C编程的肯定不陌生gdb
首先,使用ulimit -c命令,查看系统是否会生成 core文件
sh#返回结果可能是0 ulimit -c
当返回结果为0时,说明系统不会生成core文件,这个时候使用ulimit -c命令改变系统的默认设置
shulimit -c unlimited #或者 ulimit -c n #n大于0的数字
这样当程序运行错的时候,就会把运行过程记录到core文件里面
一般来说,core文件会在程序运行目录下生成,文件名类似 core.5740
下面开始使用gdb来调试
sh gdb php -c core.5740 #进入之后显示很多东西,然后不停的 按 输入 bt回车,查看执行流程 #在gdb运行环境中,使用PHP的gdb调试脚本,其中/prefix/php-src-dir 是php的源码目录 source /prefix/php-src-dir/.gdbinit #zbacktrace会更加精确到PHP的错误 zbacktrace
详细的使用gdb调试PHP的文章,可以参考鸟哥的博客
如何调试PHP的Core之获取基本信息
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/30244.html
摘要:但执行后没有任何信息输出,这时候通过什么方法能知道程序错在哪里这里可以将解决问题能力分为个等级,越到后面的表示能力越强。这个考验全部通过,表明此程序员已经具备了专业程序员应该有的解决问题能力了。 这个话题老生长谈了,在面试中必然考核的能力中,我个人认为解决问题能力是排第一位的,比学习能力优先级更高。解决问题的能力既能看出程序员的思维能力,应变能力,探索能力等,又可以看出他的经验。如果解...
摘要:来自的扩展使用开发,可以很容易的使用进行调试。运行返回实际就是在函数名前面添加,然后进行调试第一步运行然后运行终端提示输入输入此时会回显然后输入显示其中文件的内容为可以看到,函数源代码已经出来了,可以使用常用的命令进行调试了。 来自:http://www.codefrom.com/paper/%E4%BD%BF%E7%94%A8gdb%E8%B0%83%E8%AF%95p... ...
摘要:要看到具体的函数就需要用扩展或者用调试,高级点还可以用。就是要跟踪的进程。原理众所周知,是用写的,而各种函数调用的信息都会用语言的来表示,所以只要两步就能拿到堆栈信息读取进程的内存在内存里找到函数调用堆栈信息第一步可以通过或实现。 生产环境多多少少会遇到CPU占用很高或者卡住的PHP进程,这时怎样才能知道这个进程在干啥呢? 一个方法是strace跟踪系统调用和参数,这样能大概知道PHP...
摘要:关于结构体内存对齐是什么,请参考源码学习内存管理笔记。这说明在当前情况下,字符串结构中的柔性数组的起始位置并不受是否加关键字而影响,是紧跟在结构体后面的,所以节省内存这个说法并不成立。 baiyan 全部视频:https://segmentfault.com/a/11... 今天我们正式进入redis5源码的学习。redis是一个由C语言编写、基于内存、单进程、可持久化的Key-Va...
摘要:本文首发于作者基于中的在中,的作用是将一个一维数组的值转化为字符串。为了能通过修改代码来看效果,将函数复制到扩展文件中,并将其命名为源码内容省略在扩展中新增一个扩展函数因为扩展的编译以及引入前面的已经提及。 本文首发于 https://github.com/suhanyujie...* 作者:suhanyujie 基于 PHP 7.3.3 PHP 中的 implode 在 PH...
阅读 3568·2021-11-18 13:20
阅读 2726·2021-10-15 09:40
阅读 1739·2021-10-11 10:58
阅读 2106·2021-09-27 13:36
阅读 2585·2021-09-07 10:06
阅读 1847·2021-08-11 11:21
阅读 1424·2019-08-29 17:04
阅读 2079·2019-08-29 14:06