dwww Home | Manual pages | Find package

uflow(8)                    System Manager's Manual                   uflow(8)

NAME
       uflow,  javaflow,  perlflow,  phpflow,  pythonflow, rubyflow, tclflow -
       Print a flow graph of method calls in high-level languages.

SYNOPSIS
       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

DESCRIPTION
       uflow  traces method calls and prints them in a flow graph that can fa-
       cilitate 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:+Extended-
       DTraceProbes"  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.

REQUIREMENTS
       CONFIG_BPF and bcc.

OPTIONS
       -M METHOD
              Print only method calls where the method name begins  with  this
              string.

       -C CLAZZ
              Print  only  method  calls where the class name begins with this
              string. The class name interpretation strongly  depends  on  the
              language.  For  example,  in Java use "package/subpackage/Class-
              Name" to refer to classes.

       -v     Print the resulting BPF program, for debugging purposes.

       {java,perl,php,python,ruby,tcl}
              The language to trace.

       pid    The process id to trace.

EXAMPLES
       Follow method flow in a Ruby process:
              # uflow ruby 148

       Follow method flow in a Java process where the class name is
       java.lang.Thread:
              # uflow -C java/lang/Thread java 1802

FIELDS
       CPU    The CPU number on which the method was invoked. This  is  useful
              to easily see where the output skips to a different CPU.

       PID    The process id.

       TID    The thread id.

       TIME   The duration of the method call.

       METHOD The method name.

OVERHEAD
       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 collec-
       tion  mechanism.  Do not use for performance- sensitive production sce-
       narios, and always test first.

SOURCE
       This is from bcc.

              https://github.com/iovisor/bcc

       Also look in the bcc distribution for  a  companion  _example.txt  file
       containing example usage, output, and commentary for this tool.

OS
       Linux

STABILITY
       Unstable - in development.

AUTHOR
       Sasha Goldshtein

SEE ALSO
       trace(8), ustat(8)

USER COMMANDS                     2018-10-09                          uflow(8)

Generated by dwww version 1.16 on Tue Dec 16 16:51:55 CET 2025.