diff options
author | Leah Neukirchen <leah@vuxu.org> | 2022-01-02 20:04:57 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2022-01-02 20:04:57 +0100 |
commit | f26931d3c13e326740ea2f7ee78192f737c51742 (patch) | |
tree | 3f104dcaa7c1868710ba3f511c9b957c24b66019 | |
parent | 06a771fcfb511d2fab024d5970c9f4495abab8c3 (diff) | |
download | extrace-f26931d3c13e326740ea2f7ee78192f737c51742.tar.gz extrace-f26931d3c13e326740ea2f7ee78192f737c51742.tar.xz extrace-f26931d3c13e326740ea2f7ee78192f737c51742.zip |
fix bug where exec() calls would create duplicate entries in pid_db
Also print execution times for processes that exec'd when -t is used.
-rw-r--r-- | extrace.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/extrace.c b/extrace.c index 9f5f166..9753f43 100644 --- a/extrace.c +++ b/extrace.c @@ -362,12 +362,21 @@ handle_msg(struct cn_msg *cn_hdr) if (show_exit || !flat) { for (i = 0; i < PID_DB_SIZE - 1; i++) - if (pid_db[i].pid == 0) + if (pid_db[i].pid == 0 || pid_db[i].pid == pid) break; if (i == PID_DB_SIZE - 1) print_runtime_error("extrace: warning: pid_db of " "size %d overflowed\n", PID_DB_SIZE); + if (show_exit && pid_db[i].pid == pid) { + if (!flat) + fprintf(output, "%*s", 2*d, ""); + fprintf(output, "%d- %s execed time=%.3fs\n", + pid, + pid_db[i].cmdline, + (ev->timestamp_ns - pid_db[i].start) / 1e9); + } + pid_db[i].pid = pid; pid_db[i].depth = d; pid_db[i].start = ev->timestamp_ns; |