From: Namhyung Kim <namhyung@gmail.com>
To: uftrace@googlegroups.com, linux-trace-users@vger.kernel.org
Subject: [ANNOUNCE] uftrace v0.16 is released
Date: Wed, 24 Apr 2024 21:02:48 -0700 [thread overview]
Message-ID: <20240425040248.1116810-1-namhyung@gmail.com> (raw)
Hello,
I'm excited to announce that uftrace v0.16 is just released.
This release comes with many bug fixes and a few new features.
You can get it from the below link:
https://github.com/namhyung/uftrace/releases/tag/v0.16
From now on, it supports reading symbol and debug information from the
separate debug files which are usually installed with debug packages.
This can be useful when you trace system binaries which may be stripped.
For example, you can only see library calls for such a binary. Let's
trace pwd program which just prints the current directory name.
$ nm /usr/bin/pwd
nm: /usr/bin/pwd: no symbols
$ uftrace pwd
uftrace: /home/namhyung/project/uftrace/cmds/record.c:1677:check_binary
ERROR: Can't find 'mcount' symbol in the '/usr/bin/pwd'.
It seems not to be compiled with -pg or -finstrument-functions flag.
You can rebuild your program with it or use -P option for dynamic tracing.
$ uftrace -P. pwd
/home/namhyung/tmp
# DURATION TID FUNCTION
3.156 us [955818] | getenv();
0.739 us [955818] | strrchr();
488.277 us [955818] | setlocale();
1.372 us [955818] | bindtextdomain();
0.886 us [955818] | textdomain();
0.703 us [955818] | __cxa_atexit();
5.760 us [955818] | getopt_long();
5.014 us [955818] | getcwd();
11.120 us [955818] | puts();
0.597 us [955818] | free();
...
But if you install the debug package, it can see the symbols and enable
the dynamic tracing as well.
$ sudo apt install coreutils-dbgsym
$ uftrace -P. -F main pwd
/home/namhyung/tmp
# DURATION TID FUNCTION
[955863] | main() {
1.779 us [955863] | getenv();
[955863] | set_program_name() {
0.423 us [955863] | strrchr();
0.734 us [955863] | } /* set_program_name */
222.047 us [955863] | setlocale();
1.089 us [955863] | bindtextdomain();
0.461 us [955863] | textdomain();
[955863] | atexit() {
0.604 us [955863] | __cxa_atexit();
0.850 us [955863] | } /* atexit */
0.992 us [955863] | getopt_long();
[955863] | xgetcwd() {
1.337 us [955863] | getcwd();
1.668 us [955863] | } /* xgetcwd */
7.242 us [955863] | puts();
0.312 us [955863] | free();
240.040 us [955863] | } /* main */
The next change is to support octal format argument which is usally used
in the library functions dealing with filesystems. It used to have a
predefined set of mode bits like 0755 and 0644 as an enum data type. But
obviously it cannot support all combination and shows broken numbers for
them. Now it works as expected with octal arguments.
$ uftrace -F .*chmod.* -a -- chmod 747 myfile
# DURATION TID FUNCTION
173.103 us [963584] | fchmodat(-100, "myfile", 0747, 0) = 0;
Also `uftrace report` got two new output fields of (relative) standard
deviation for total and self time respectively. It'll be added when one
of --avg-total or --avg-self option is used.
$ uftrace report --avg-total
Total avg Total min Total max Total stdv Function
========== ========== ========== ========== ====================
671.447 us 671.447 us 671.447 us 0.00% setlocale
15.323 us 15.323 us 15.323 us 0.00% puts
8.458 us 8.458 us 8.458 us 0.00% getopt_long
7.044 us 7.044 us 7.044 us 0.00% getcwd
4.116 us 4.116 us 4.116 us 0.00% getenv
1.908 us 1.476 us 2.340 us 22.64% fclose
1.843 us 1.843 us 1.843 us 0.00% bindtextdomain
1.307 us 1.307 us 1.307 us 0.00% __cxa_atexit
1.294 us 1.294 us 1.294 us 0.00% strrchr
1.147 us 1.147 us 1.147 us 0.00% textdomain
0.980 us 0.980 us 0.980 us 0.00% free
0.734 us 0.251 us 1.217 us 65.80% __fpending
0.692 us 0.258 us 1.126 us 62.72% fileno
0.674 us 0.283 us 1.065 us 58.01% fflush
0.440 us 0.167 us 1.109 us 88.12% __freading
There are also more fixes and improvements. Notably it got big improvements
in Python tracing. So it can now trace sizeable projects written in Python
thanks to bug fixes in the debug file handling and symbol management without
affecting GC. Also there's a bug fix for library call tracing.
Thank you all for making uftrace more useful, efficient and portable!
Namhyung
reply other threads:[~2024-04-25 4:02 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240425040248.1116810-1-namhyung@gmail.com \
--to=namhyung@gmail.com \
--cc=linux-trace-users@vger.kernel.org \
--cc=uftrace@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).