Print PHP Call Stack

前端 未结 15 1564
清歌不尽
清歌不尽 2020-11-27 09:08

I\'m looking for a way to print the call stack in PHP.

Bonus points if the function flushes the IO buffer.

相关标签:
15条回答
  • 2020-11-27 09:42

    More readable than debug_backtrace():

    $e = new \Exception;
    var_dump($e->getTraceAsString());
    
    #2 /usr/share/php/PHPUnit/Framework/TestCase.php(626): SeriesHelperTest->setUp()
    #3 /usr/share/php/PHPUnit/Framework/TestResult.php(666): PHPUnit_Framework_TestCase->runBare()
    #4 /usr/share/php/PHPUnit/Framework/TestCase.php(576): PHPUnit_Framework_TestResult->run(Object(SeriesHelperTest))
    #5 /usr/share/php/PHPUnit/Framework/TestSuite.php(757): PHPUnit_Framework_TestCase->run(Object(PHPUnit_Framework_TestResult))
    #6 /usr/share/php/PHPUnit/Framework/TestSuite.php(733): PHPUnit_Framework_TestSuite->runTest(Object(SeriesHelperTest), Object(PHPUnit_Framework_TestResult))
    #7 /usr/share/php/PHPUnit/TextUI/TestRunner.php(305): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult), false, Array, Array, false)
    #8 /usr/share/php/PHPUnit/TextUI/Command.php(188): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
    #9 /usr/share/php/PHPUnit/TextUI/Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
    #10 /usr/bin/phpunit(53): PHPUnit_TextUI_Command::main()
    #11 {main}"
    
    0 讨论(0)
  • 2020-11-27 09:42

    You might want to look into debug_backtrace, or perhaps debug_print_backtrace.

    0 讨论(0)
  • 2020-11-27 09:44

    phptrace is a great tool to print PHP stack anytime when you want without installing any extensions.

    There are two major function of phptrace: first, print call stack of PHP which need not install anything, second, trace php execution flows which needs to install the extension it supplies.

    as follows:

    $ ./phptrace -p 3130 -s             # phptrace -p <PID> -s
    phptrace 0.2.0 release candidate, published by infra webcore team
    process id = 3130
    script_filename = /home/xxx/opt/nginx/webapp/block.php
    [0x7f27b9a99dc8]  sleep /home/xxx/opt/nginx/webapp/block.php:6
    [0x7f27b9a99d08]  say /home/xxx/opt/nginx/webapp/block.php:3
    [0x7f27b9a99c50]  run /home/xxx/opt/nginx/webapp/block.php:10 
    
    0 讨论(0)
提交回复
热议问题