Message ID | 20241024-strace-v1-1-56c4161431cd@gmx.net (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | linux-user/strace: show TID instead of PID | expand |
On Thu, Oct 24, 2024 at 01:47:31AM +0200, J. Neuschäfer wrote: > This aligns with strace, and is very useful when tracing multi-threaded > programs. The result is the same in single-threaded programs. > > gettid() requires the _GNU_SOURCE feature test macro, so it might be > unavailable in rare cases. I don't expect it to be a problem though, > because it's implemented by both glibc and musl. > > Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net> > --- Ping! Any opinions on this patch? Best regards, J. Neuschäfer > linux-user/strace.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/linux-user/strace.c b/linux-user/strace.c > index c3eb3a2706a93fdcaf693b3413b13921a3c97e8e..93e8c73de8a4a307e6e0df5555bee4c769e41e64 100644 > --- a/linux-user/strace.c > +++ b/linux-user/strace.c > @@ -4337,7 +4337,7 @@ print_syscall(CPUArchState *cpu_env, int num, > if (!f) { > return; > } > - fprintf(f, "%d ", getpid()); > + fprintf(f, "%d ", gettid()); > > for (i = 0; i < nsyscalls; i++) { > if (scnames[i].nr == num) { > > --- > base-commit: 6f625ce2f21d6a1243065d236298277c56f972d5 > change-id: 20241024-strace-a52bd8e3d305 > > Best regards, > -- > J. Neuschäfer <j.neuschaefer@gmx.net> > >
On 10/23/24 16:47, J. Neuschäfer wrote: > This aligns with strace, and is very useful when tracing multi-threaded > programs. The result is the same in single-threaded programs. See also "-D log.%d -d tid -strace" which will split the output into per-tid files. > > gettid() requires the _GNU_SOURCE feature test macro, so it might be > unavailable in rare cases. I don't expect it to be a problem though, > because it's implemented by both glibc and musl. > > Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net> > --- > linux-user/strace.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/linux-user/strace.c b/linux-user/strace.c > index c3eb3a2706a93fdcaf693b3413b13921a3c97e8e..93e8c73de8a4a307e6e0df5555bee4c769e41e64 100644 > --- a/linux-user/strace.c > +++ b/linux-user/strace.c > @@ -4337,7 +4337,7 @@ print_syscall(CPUArchState *cpu_env, int num, > if (!f) { > return; > } > - fprintf(f, "%d ", getpid()); > + fprintf(f, "%d ", gettid()); Probably better as qemu_get_thread_id(), but otherwise Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 11/11/24 06:59, Richard Henderson wrote: > On 10/23/24 16:47, J. Neuschäfer wrote: >> This aligns with strace, and is very useful when tracing multi-threaded >> programs. The result is the same in single-threaded programs. > > See also "-D log.%d -d tid -strace" which will split the output into per-tid files. > >> >> gettid() requires the _GNU_SOURCE feature test macro, so it might be >> unavailable in rare cases. I don't expect it to be a problem though, >> because it's implemented by both glibc and musl. >> >> Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net> >> --- >> linux-user/strace.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/linux-user/strace.c b/linux-user/strace.c >> index c3eb3a2706a93fdcaf693b3413b13921a3c97e8e..93e8c73de8a4a307e6e0df5555bee4c769e41e64 >> 100644 >> --- a/linux-user/strace.c >> +++ b/linux-user/strace.c >> @@ -4337,7 +4337,7 @@ print_syscall(CPUArchState *cpu_env, int num, >> if (!f) { >> return; >> } >> - fprintf(f, "%d ", getpid()); >> + fprintf(f, "%d ", gettid()); > > Probably better as qemu_get_thread_id(), but otherwise Or, without the syscall, get_task_state(env_cpu(env))->ts_tid r~
diff --git a/linux-user/strace.c b/linux-user/strace.c index c3eb3a2706a93fdcaf693b3413b13921a3c97e8e..93e8c73de8a4a307e6e0df5555bee4c769e41e64 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -4337,7 +4337,7 @@ print_syscall(CPUArchState *cpu_env, int num, if (!f) { return; } - fprintf(f, "%d ", getpid()); + fprintf(f, "%d ", gettid()); for (i = 0; i < nsyscalls; i++) { if (scnames[i].nr == num) {
This aligns with strace, and is very useful when tracing multi-threaded programs. The result is the same in single-threaded programs. gettid() requires the _GNU_SOURCE feature test macro, so it might be unavailable in rare cases. I don't expect it to be a problem though, because it's implemented by both glibc and musl. Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net> --- linux-user/strace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- base-commit: 6f625ce2f21d6a1243065d236298277c56f972d5 change-id: 20241024-strace-a52bd8e3d305 Best regards, -- J. Neuschäfer <j.neuschaefer@gmx.net>