Skip to content

uftrace v0.15

Compare
Choose a tag to compare
@namhyung namhyung released this 08 Jan 03:57
· 68 commits to master since this release

This version comes with a new architecture support as well as
many bug fixes and various improvements.

RISC-V Architecture Support

uftrace can trace functions of RV64G binaries compiled by gcc/clang with
appropriate options (-pg or -finstrument-functions). Library functions
are also traced and you can see the arguments and return values too.
(There are issues in argument handling, but library functions should be
fine.) However dynamic tracing is not supported yet.

$ uftrace --force -a -t 3us -- uname -m
riscv64
# DURATION     TID     FUNCTION
 263.004 us [138960] | strrchr("uname", '/') = "NULL";
  87.751 us [138960] | setlocale(LC_ALL, "") = "NULL";
   5.000 us [138960] | bindtextdomain("coreutils", "/usr/share/locale");
   4.000 us [138960] | getopt_long(2, 0x3fecdcf328, "asnrvmpio") = 109;
   4.000 us [138960] | uname();
   8.250 us [138960] | fputs_unlocked();
 443.257 us [138960] | __overflow();
   3.250 us [138960] | __fpending();
   4.500 us [138960] | fclose(&_IO_2_1_stdout_) = 0;

Other Notable Improvements

As libtraceevent is available on recent distros, the kernel tracing uses
the system installed library and drops the old copy in the uftrace source.
This should help resolving possible future kernel issues and reduce the
maintenance burden.

Also some distros build binaries without PLT and it can confuse uftrace
about the library call tracing. It now detects the case by verifying
PLT entries not to miss library calls without it.

What's Changed

New Contributors

Full Changelog: v0.14...v0.15