zbacktrace php,如何在lldb中的实时运行脚本上转储PHP回溯?

我正在玩

LLDB (debugger),我做了以下实验.

>运行PHP脚本为:

php -r "sleep(1000);"

要么:

php -r "function r(){sleep(1000);}r();"

>在另一个控制台上,我直接从lldb调用zif_debug_backtrace():

echo 'call (void)zif_debug_backtrace()' | lldb -p $(pgrep -fn php)

以上工作,但是过程停止了以下警告:

Warning: sleep() expects at most 2 parameters, 1606408648 given in Command line code on line 1

Call Stack:

0.0016 235152 1. {main}() Command line code:0

0.0021 235248 2. sleep(1000) Command line code:1

我不太确定为什么脚本必须停止,我需要做什么才能实现透明度(不影响脚本)?

附:调用zif_debug_print_backtrace()和调用custom_backtrace()时显示的同样的事情:Backtrace null函数调用.我正在使用xdebug,如果这更改任何东西.

也许我需要调用一个不同的功能,如zend_fetch_debug_backtrace(请参阅:image dump symtab)?或者使用正确的参数,如果是,哪一个?

我只对lldb / gdb解决方案感兴趣,以打印回溯.

类似的方法在Ruby中有效,例如:

运行:ruby -e’sleep 1000′.

>在另一个终端:echo’call(void)rb_backtrace()’| lldb -p $(pgrep -nf ruby​​).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值