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

逆向工程 调试 数据库 调用栈 数据库 php
2021-06-23 08:28:51

我正在尝试使用以下 2 个简单步骤打印实时运行脚本的 PHP 回溯:

  1. 运行 PHP 脚本为:

    php -r "sleep(1000);"
    
  2. 在另一个控制台上,我直接zif_debug_backtrace()lldb以下位置调用

    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

为什么脚本停止以及如何防止?是否可以在实时运行期间打印 PHP 回溯而不影响脚本?

是因为我应该指定一些返回地址吗?如果有,是哪一个?

顺便提一句。调用时zif_debug_print_backtrace()和调用custom_backtrace()时显示相同的情况Backtrace null function calledxdebug如果这改变了什么,我正在使用

也许我需要调用一个不同的函数,比如zend_fetch_debug_backtrace(见:)image dump symtab或者使用正确的论据,如果是,是哪一个?

我对lldbgdb解决方案感兴趣

0个回答
没有发现任何回复~