How to trace code execution in PHP?

2020-02-23 06:09发布

问题:

I would like to see a log of THE WHOLE code execution of PHP script(s). Something like this: http://en.wikibooks.org/wiki/Ruby_Programming/Standard_Library/Tracer (for lack of better example; no flame please).

Is there some way how to obtain the log in PHP?

Note: I know I can use a debugger but that's not the same.

回答1:

Xdebug is definitely what you want, but with something like callgrind from the valgrind suite as well.

Zend blog post here should give you some pointers: http://devzone.zend.com/1139/profiling-php-applications-with-xdebug/



回答2:

phptrace is an awesome tool to trace php code executions



回答3:

In any function you can see the whole backtrace by using debug_backtrace(...)

Or you can use Xdebug profiler to profile your PHP scripts.



回答4:

Have a look at Kint.

It's var_dump() and debug_backtrace() on steroids. Easy to use, but powerful and customizable. An essential addition to your development toolbox.

it also has platform specific extensions here



回答5:

You can use a PHP extension called : XHProf, developed by Facebook.

It is capable of reporting function-level call counts and inclusive and exclusive wall time, CPU time and memory usage.

https://github.com/facebook/xhprof



回答6:

This is what I need to traces all the lines when running php or Laravel framework in windows sub-system for linux (WSL).

Install xdebug in the system then edit /etc/php/7.4/mods-available/xdebug.ini with the following details

zend_extension=xdebug.so
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_connect_back=1
xdebug.remote_port = 9001
xdebug.scream=0
xdebug.cli_color=1
xdebug.show_local_vars=1
xdebug.remote_autostart=1

; this part here, above is used for line by line debug in vscode
xdebug.auto_trace=1
xdebug.trace_output_dir = /mnt/c/projects/www/phptraces
xdebug.trace_output_name=trace.%u
xdebug.collect_params=4
xdebug.trace_format = 1

This one here

xdebug.trace_output_dir = /mnt/c/projects/www/phptraces

is the path where to store logs

For laravel framework it generate very large file most likely 4GB in size. So I used

split -l 1000 trace.1576842503_368392.xt pieces/traces

to split it into smaller parts containing 1000 lines each and store it into pieces directory.

Then you can use editor find in files what your looking for



标签: php trace