uflow(8) | System Manager's Manual | uflow(8) |
uflow, javaflow, perlflow, phpflow, pythonflow, rubyflow, tclflow - Print a flow graph of method calls in high-level languages.
javaflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
perlflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
phpflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
pythonflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
rubyflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
tclflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
uflow [-h] [-M METHOD] [-C CLAZZ] [-v] [-l {java,perl,php,python,ruby,tcl}]
pid
uflow traces method calls and prints them in a flow graph that can facilitate debugging and diagnostics by following the program's execution (method flow).
This tool relies on USDT probes embedded in many high-level languages, such as Java, Perl, PHP, Python, Ruby, and Tcl. It requires a runtime instrumented with these probes, which in some cases requires building from source with a USDT-specific flag, such as "--enable-dtrace" or "--with-dtrace". For Java processes, the startup flag "-XX:+ExtendedDTraceProbes" is required. For PHP processes, the environment variable USE_ZEND_DTRACE must be set to 1.
Since this uses BPF, only the root user can use this tool.
CONFIG_BPF and bcc.
This tool has extremely high overhead because it prints every method call. For some scenarios, you might see lost samples in the output as the tool is unable to keep up with the rate of data coming from the kernel. Filtering by class or method prefix can help reduce the amount of data printed, but there is still a very high overhead in the collection mechanism. Do not use for performance- sensitive production scenarios, and always test first.
This is from bcc.
Also look in the bcc distribution for a companion _example.txt file containing example usage, output, and commentary for this tool.
Linux
Unstable - in development.
Sasha Goldshtein
2018-10-09 | USER COMMANDS |