function::ustack - Linux


Overview

function::ustack is a powerful command-line tool used to profile and debug the performance of Rust programs. It allows developers to analyze the call stack and identify potential performance bottlenecks.

Syntax

function::ustack [FLAGS] [OPTIONS] <PROFILE_FILE>

Options/Flags

  • -o, --output: Specify the output file for the stack trace. Defaults to stdout.
  • -f, --format: Output format. Available options are:
    • text
    • json
    • csv
  • --num: Number of stack frames to show. Defaults to 10.
  • --sort: Sorting criteria for the stack trace. Available options are:
    • time
    • self_time
    • total_time
    • exclusive_time
  • --flamegraph: Generate a flamegraph (visualization of the call stack).
  • --no-lines: Disable displaying line numbers.
  • --demangle: Demangle symbol names.
  • --folded: Fold inner function calls.
  • --dwarf-stack-trace: Use DWARF debug information for stack trace unwinding.
  • --help: Print usage information.

Examples

Print a text-based stack trace:

function::ustack program.profile

Generate a JSON output with flamegraph:

function::ustack --format json --flamegraph program.profile > output.json

Print a folded stack trace sorted by total time:

function::ustack --folded --sort total_time program.profile

Common Issues

  • Missing dwarf information: Ensure that the program is compiled with debug information (-g) to enable stack trace unwinding.
  • Segfaults and crashes: If the program crashes while profiling, the stack trace may be incomplete or inaccurate.
  • Slow profiling: Profiling can significantly slow down the execution of the program. Use the --num option to limit the number of stack frames captured.

Integration

Integration with other tools:

  • perf: Use function::ustack to analyze stack traces from perf profiling.
  • Flamegraph.pl: Generate flamegraphs with function::ustack’s output using the Flamegraph.pl utility.

Related Commands

  • perf
  • gprof
  • stackcollapse-rs