# Install uftrace with Homebrew, apt, Nix, zypper

Function graph tracer for C/C++/Rust. Version 0.19 via Homebrew; verified from local package data.

## Install

```sh
sudo av install brew:uftrace
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install uftrace
```

  Evidence: local Homebrew formula metadata

### Linux

- Debian apt (92%):

```sh
sudo apt install uftrace
```

  Evidence: Debian stable package indexes: uftrace from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

- Nix (92%):

```sh
nix profile install nixpkgs#uftrace
```

  Evidence: nixpkgs package indexes: pkgs/by-name/uf/uftrace/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

- zypper (92%):

```sh
sudo zypper install uftrace
```

  Evidence: openSUSE Tumbleweed package metadata: uftrace from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst

## Package facts

- **Package key:** brew:uftrace
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/uftrace>
- **Version:** 0.19
- **Source summary:** Function graph tracer for C/C++/Rust
- **Homepage:** <https://uftrace.github.io/slide/>
- **Repository:** <https://github.com/namhyung/uftrace>
- **Upstream docs:** <https://github.com/namhyung/uftrace#readme>
- **License:** GPL-2.0-only
- **Source archive:** <https://github.com/namhyung/uftrace/archive/refs/tags/v0.19.tar.gz>
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- uftrace (cli)
- uftrace (alias)

## Dependencies

- capstone
- elfutils
- libunwind
- luajit
- ncurses
- python@3.14

## Build dependencies

- pandoc
- pkgconf

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 0.19
- Local data: ok
- Upstream repository: https://github.com/namhyung/uftrace
- Upstream latest detected: v0.19 (current)
- info: No package-manager update timestamp was available.
## Project history and usage

uftrace is a userspace function graph tracer for C, C++, Rust, and Python programs. It records function entry and exit timing, can combine user, library, kernel, event, and scheduling information, and presents the execution flow through replay, reports, graphs, scripts, a TUI, and export formats.

### Project history

The official repository was created in 2014. The README says uftrace was heavily inspired by the Linux kernel ftrace framework, and that the name combines user and ftrace.

The project began with compiler-supported function tracing but later added dynamic tracing. The README describes that shift explicitly: it initially supported tracing with compiler support, then gained the ability to trace without recompilation by analyzing function prologues and dynamically patching instructions.

Recent releases show the tool continuing to broaden language, architecture, and analysis support. The NEWS file records Python tracing in v0.14, RISC-V support in v0.15, separate debug-file support in v0.16, watchpoints in v0.17, filter-condition work in v0.18, and latency percentile scripting plus Chrome dump timestamp improvements in v0.19.

### Adoption history

uftrace's adoption niche is developers and performance investigators who want call-graph-level tracing from a command-line tool, especially on Linux. Its package-manager footprint in this batch includes Homebrew, Debian, Nix, Ubuntu, and openSUSE, showing cross-distribution demand beyond its upstream GitHub audience.

The project also maintains package-awareness in its README by displaying Repology packaging status, a small signal that upstream expects distribution packages to be a major discovery and installation path.

### How it is used

Users can run uftrace live against a program, or record first and replay/report/graph/dump/analyze the saved `uftrace.data` directory. The command set includes `record`, `replay`, `report`, `live`, `info`, `dump`, `recv`, `graph`, `script`, and `tui`.

The tracing modes cover compiler instrumentation such as `-pg`, `-finstrument-functions`, and `-fpatchable-function-entry`, dynamic patching with `-P.`, PLT/library call tracing, Python tracing, kernel tracing through Linux ftrace, Linux event tracing, perf_event scheduling and PMU information, and SystemTap SDT user events.

uftrace also supports filters, function arguments and return values, Chrome trace viewer output, flame graphs, graphviz and mermaid call graphs, source-line information, and scripts through Python/LuaJIT APIs.

### Why package nerds care

For package nerds, uftrace sits in the sweet spot between `strace`, profilers, kernel ftrace, and language-specific tracers. It is a single CLI that exposes a deep stack of optional capabilities, so distribution builds and optional dependencies materially affect what the installed package can do.

It is also notable because it brings kernel-tracing ideas to userspace debugging workflows while remaining scriptable and inspectable from the shell. That makes it attractive in package-manager ecosystems where developers want performance tools available with one install command.

### Timeline

- 2014-02-11: Official GitHub repository created.
- 2023-01-09: uftrace v0.13 release published.
- 2023-06-20: uftrace v0.14 added Python tracing and runtime option changes with an agent.
- 2024-01-08: uftrace v0.15 added basic RISC-V support.
- 2024-12-17: uftrace v0.17 added watchpoint support for global variables.
- 2026-03-02: uftrace v0.19 release published.

### Related projects

- uftrace is explicitly inspired by the Linux kernel ftrace framework.
- Its output and workflows relate to Chrome trace viewer, flame graph tooling, graphviz, mermaid, Linux perf_event, SystemTap SDT, Python tracing, and LuaJIT scripting.

### Sources

- GitHub repository and release metadata records 2014 creation and recent release dates through 2026.
- <https://github.com/namhyung/uftrace README documents purpose, ftrace inspiration, tracing modes, commands, output formats, and usage.>
- <https://raw.githubusercontent.com/namhyung/uftrace/master/NEWS records release-by-release feature history through v0.19.>
- source_facts.package-manager lists Homebrew, Debian, Nix, Ubuntu, and openSUSE package names.


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** uftrace
- **Version Scheme:** 0
- **Revision:** 0
- **Head Version:** HEAD
- **Requirements:** linux
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Debian apt - uftrace - 0.17-1: normalized package name match | Debian stable package indexes: uftrace from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | Traces and analyzes execution of programs written in C/C++ | https://github.com/namhyung/uftrace
- Nix - uftrace: normalized package name match | nixpkgs package indexes: pkgs/by-name/uf/uftrace/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- Ubuntu apt - uftrace - 0.15.2-1build2: normalized package name match | Ubuntu 24.04 LTS package indexes: uftrace from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | Traces and analyzes execution of programs written in C/C++ | https://github.com/namhyung/uftrace
- zypper - uftrace - 0.19-1.2: normalized package name match | openSUSE Tumbleweed package metadata: uftrace from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | A function call graph tracer for C, C++, Rust and Python programs | https://github.com/namhyung/uftrace


## Related links

- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [Developer build packages](https://www.automicvault.com/pkg/developer-build-tools/) - Matched build, compiler, generator, or developer workflow metadata.
- [capstone](https://www.automicvault.com/pkg/brew/capstone/) - Runtime dependency declared by Homebrew.
- [elfutils](https://www.automicvault.com/pkg/brew/elfutils/) - Runtime dependency declared by Homebrew.
- [luajit](https://www.automicvault.com/pkg/brew/luajit/) - Runtime dependency declared by Homebrew.
- [ncurses](https://www.automicvault.com/pkg/brew/ncurses/) - Runtime dependency declared by Homebrew.
- [python@3.14](https://www.automicvault.com/pkg/brew/python-3-14/) - Runtime dependency declared by Homebrew.
- [pandoc](https://www.automicvault.com/pkg/brew/pandoc/) - Build dependency declared by Homebrew.
- [pkgconf](https://www.automicvault.com/pkg/brew/pkgconf/) - Build dependency declared by Homebrew.
- [cargo-bloat](https://www.automicvault.com/pkg/brew/cargo-bloat/) - Shares av.db curated category or tags: cli, developer-tools, profiling, rust.
- [cargo-flamegraph](https://www.automicvault.com/pkg/brew/cargo-flamegraph/) - Shares av.db curated category or tags: cli, developer-tools, profiling, rust.
- [cargo-instruments](https://www.automicvault.com/pkg/brew/cargo-instruments/) - Shares av.db curated category or tags: cli, developer-tools, profiling, rust.
- [clang-build-analyzer](https://www.automicvault.com/pkg/brew/clang-build-analyzer/) - Shares av.db curated category or tags: cli, cpp, developer-tools, profiling.
- [counts](https://www.automicvault.com/pkg/brew/counts/) - Shares av.db curated category or tags: cli, developer-tools, profiling, rust.
- [lttng-ust](https://www.automicvault.com/pkg/brew/lttng-ust/) - Shares av.db curated category or tags: c, cli, developer-tools, tracing.
- [tracy](https://www.automicvault.com/pkg/brew/tracy/) - Shares av.db curated category or tags: cli, cpp, developer-tools, profiling, tracing.
- [valgrind](https://www.automicvault.com/pkg/brew/valgrind/) - Shares av.db curated category or tags: c, cli, developer-tools, profiling.
- [gprof2dot](https://www.automicvault.com/pkg/brew/gprof2dot/) - Both packages touch the same language runtime or ecosystem. Shared terms: cli, developer, developer-tools, graph, profiling.
- [memray](https://www.automicvault.com/pkg/brew/memray/) - Both packages touch the same language runtime or ecosystem. Shared terms: cli, developer, developer-tools, profiling, python.
- [snakeviz](https://www.automicvault.com/pkg/brew/snakeviz/) - Both packages touch the same language runtime or ecosystem. Shared terms: cli, developer, developer-tools, profiling, python.

## Combined YAML source

View the package source record on GitHub. [combined/uftrace.yml](https://github.com/automic-vault/db/blob/main/combined/uftrace.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
