Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Function graph tracer for C/C++/Rust/Python
| Date | Stars |
|---|---|
| 2026-07-24 | 3445 |
| 2026-07-25 | 3445 |
| 2026-07-28 | 3445 |
| 2026-07-30 | 3445 |
| 2026-08-06 | 3445 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
5.0
growth rate 0.00%/day
[](https://github.com/namhyung/uftrace/actions/workflows/nightly-test.yml)
[](https://discord.gg/MENMKaCWqD)
uftrace
=======
<a href="https://repology.org/project/uftrace/versions">
<img src="https://repology.org/badge/vertical-allrepos/uftrace.svg" alt="Packaging status" align="right">
</a>
uftrace is a function call graph tracer for C, C++, Rust and Python programs.
It hooks into the entry and exit of each function, recording timestamps
as well as the function's arguments and return values. uftrace is capable
of tracing both user and kernel functions, as well as library functions and
system events providing an integrated execution flow in a single timeline.
Initially, uftrace only supported function tracing with compiler support.
However, it now allows users to trace function calls without recompilation
by analyzing instructions in each function prologue and dynamically and
selectively patching those instructions.
Users can also write and run scripts for each function entry and exit using
python/luajit APIs to create custom tools for their specific purposes.
uftrace offers various filters to reduce the amount of trace data and provides
visualization using Chrome trace viewer and flame graph or call-graph diagrams
for graphviz and mermaid, allowing for a big picture view of the execution flow.
It was heavily inspired by the ftrace framework of the Linux kernel and
the name uftrace stems from the combination of user and ftrace.
It can record data from:
- User space C/C++/Rust functions, by either dynamically patching functions
using `-P.`, or else selective NOP patching using code compiled with `-pg`,
`-finstrument-functions` or `-fpatchable-function-entry=N`.
- C/C++/Rust Library functions (through PLT hooking)
- Python functions (using Python's trace/profile infrastructure)
- Kernel functions (using the ftrace framework in Linux kernel)
- Kernel trace events (using event tracing framework in Linux kernel)
- Task creation, termination and scheduling events (using Linux perf_event)
- User space events in the target binary or libraries (using SystemTap SDT ABI)
- PMU counter values for given functions (using Linux perf_event)
With the recorded data, uftrace can:
- Show colored and nested function call graphs.
- Show arguments and return values symbolically using libc function prototypes
and DWARF debug information.
- Apply filters to minimize the amount of trace data in both record and replay time.
- Extract metadata from traces. (e.g. system information on which the trace was taken)
- Generate symbol tables and memory maps of the traced program and library functions.
- Generate task relationship trees (parent and children) of nested programs in traces.
It supports many commands and filters such as filtering by function call
duration for analysis of program execution and performance.

* Homepage: https://github.com/namhyung/uftrace
* Tutorial: https://github.com/namhyung/uftrace/wiki/Tutorial
* Chat: https://discord.gg/MENMKaCWqD (Discord)
* Mailing list: [[email protected]](https://groups.google.com/forum/#!forum/uftrace)
* Lightning talk: https://youtu.be/LNav5qvyK7I
Features
========
uftrace traces each function in the executable and shows time durations.
Usually, for this to be possible, the program needs to be compiled with
`-pg` or `-fpatchable-function-entry=5` (`=2` is enough on aarch64).
With full dynamic tracing (`-P.`|`--patch=.`), uftrace works on all executables (as
long they are not stripped, or symbol information is available from a separate file).
uftrace hooks into the PLT in the given executable file to trace library calls and with
(`-l`|`--nest-libcall`), it also hooks into the procedure linkage tables (PLTs) of shared
libraries. The depthExcerpt of 16,830 characters
Read on GitHub3.6k
Honggyu Kim · SK hynix · South Korea
587
71
Clément Guidi · Ciena · Canada
60
hanbeom
48
48
41
24
23
22
Byeonggon Lee · @WEBTOON · South Korea
20
18
14
12
12
11
paul cannon · Storj Labs
10
9
7
Juhee Kang · South Korea
7
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:06f07657f104b6f3, topic:tracing