Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

The following are examples of php_flowinfo.d.

This is a simple script to trace the flow of PHP functions.
Here it traces the example program, Code/Php/func_abc.php

# php_flowinfo.d 
C    PID/TID   DELTA(us)              FILE:LINE TYPE     -- FUNC
0  18422/1             9      func_abc.php:22   func     -> func_a
0  18422/1            35      func_abc.php:18   func       -> sleep
0  18422/1       1009146      func_abc.php:18   func       <- sleep
0  18422/1            35      func_abc.php:19   func       -> func_b
0  18422/1            24      func_abc.php:11   func         -> sleep
0  18422/1       1009803      func_abc.php:11   func         <- sleep
0  18422/1            34      func_abc.php:12   func         -> func_c
0  18422/1            24      func_abc.php:5    func           -> sleep
0  18422/1       1009953      func_abc.php:5    func           <- sleep
0  18422/1            28      func_abc.php:6    func         <- func_c
0  18422/1            11      func_abc.php:13   func       <- func_b
0  18422/1            10      func_abc.php:20   func     <- func_a
^C

The third column is indented by 2 spaces to show when a new function begins. 
This shows which function is calling which - the output above begins by 
showing that func_a() began; slept, and returned from sleep; and then called 
func_b().

The DELTA(us) column shows time from that line to the previous line, and
so can be a bit tricky to read. For example, the second line of data output
(skipping the header) reads as "the time from func_a() beginning to
calling the sleep function beginning was 35 microseconds".

The LINE column shows the line in the file what was being executed. Refer
to the source program to see what this line refers to.

If the output looks shuffled, check the CPU "C" column - if it changes,
then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for
details and suggested workarounds.

See Notes/ALLflow_notes.txt for important notes about reading flow outputs.