助力软件开发企业降本增效 PHP / java源码系统,只需一次付费,代码终身使用! 广告
C程序的调用栈,我们通过pstack或gdb可以很容易获取到。PHP作为一种非编译型的语言,实际运行在C编写的PHP虚拟机之上。 当我们用pstack 或 gdb来打印PHP的调用栈时,实际是打印的虚拟机的执行信息。比如: $ pstack 3130 #0 0x00000035ee6accc0 in __nanosleep_nocancel () from /lib64/libc.so.6 #1 0x00000035ee6acb50 in sleep () from /lib64/libc.so.6 #2 0x0000000000714f23 in zif_sleep () #3 0x00000000008e36cd in execute_internal () #4 0x00007f27b38b2b77 in phptrace_execute_core () from /home/renyongquan/opt/php5.4.35/lib/php/extensions/debug-non-zts-20100525/phptrace.so #5 0x00007f27b38b2c04 in phptrace_execute_internal () from /home/renyongquan/opt/php5.4.35/lib/php/extensions/debug-non-zts-20100525/phptrace.so #6 0x00000000008e44bc in zend_do_fcall_common_helper_SPEC () 3130 为php-fpm的进程ID,通过pstack我们看到了PHP虚拟机调用栈,然而对于一个PHP开发者来说,更感兴趣的是PHP的调用栈, 你可以通过phptrace获取: 安装和使用:https://github.com/Qihoo360/phptrace/blob/master/README_ZH.md