Using "-c" and CTRL+C
Bud Millwood
budm at weird-solutions.com
Fri May 9 10:42:02 UTC 2014
I think I've located my problem - it's a question of choosing the right
pid. I'm debugging a multi-threaded application, and "ps" doesn't show the
pid for each thread, whereas htop does. Choosing the pid of a specific
thread causes strace to give me the statistics I'm looking for.
So it seems that if I run "strace -c" on a pid that is blocked in a system
call, it doesn't print statistics at all. It's a little misleading; maybe
it should print out statistics, and just show that 100% of the time it was
in that call. Or maybe it can't detect the current call if strace was
started after the call was made?
Either way, definitely operator error on my part.
- Bud
On Fri, May 9, 2014 at 10:13 AM, Bud Millwood <budm at weird-solutions.com>wrote:
> Hi Dmitry, thanks for replying:
>
> I'm not using the -l1 option. I see this behavior on both Ubuntu
> 12.10/x86-64 and CentOS 6.3/x86-64.
>
> If I kill the target process, it always works correctly. The problem is if
> I use CTRL-C to detach from the target process. Eventually I managed to get
> it to produce the statistical output, as shown below. I used it for a few
> hours, then left the terminal open over night, and the next day it was not
> printing the output again. So it looks like this:
>
> $ sudo strace -p 31457 -c
> Process 31457 attached - interrupt to quit
> ^CProcess 31457 detached
> $ sudo strace -p 31457 -c
> Process 31457 attached - interrupt to quit
> ^CProcess 31457 detached
> $ sudo strace -c -p 31457 <-- NOTE CHANGING COMMAND LINE ARGS ORDER
> Process 31457 attached - interrupt to quit
> ^CProcess 31457 detached
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 75.38 0.047831 66 730 poll
> 24.62 0.015622 20 793 sendto
> 0.00 0.000000 0 39 ioctl
> 0.00 0.000000 0 39 select
> 0.00 0.000000 0 769 recvfrom
> 0.00 0.000000 0 107 29 futex
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.063453 2477 29 total
>
> After this it worked for a while *regardless* of the order of the command
> line arguments. And then after 24 hours, it doesn't work again at all,
> *regardless* of command line argument order. So I just can't reproduce it
> reliably.
>
> - I thought it might be because there were no system calls in the target
> process - that the target was blocked in one call, such as "select", but
> that's not the case.
> - I tried sending SIGINT and SIGTERM to the strace process from another
> terminal, both signals cause the process to simply exit the same as if I
> pressed CTRL-C, i.e. no data printed.
>
> - Bud
>
>
>
>
>
> On Thu, May 8, 2014 at 11:11 PM, Dmitry V. Levin <ldv at altlinux.org> wrote:
>
>> Hi,
>>
>> On Wed, May 07, 2014 at 04:54:40PM +0200, Bud Millwood wrote:
>> > Hi all, I'm not on this list but I'll keep an eye out for a response
>> > to this message.
>> >
>> > In the past I noticed that if I ran "strace -c" against a process, I
>> > could press CTRL-C and strace would print out the statistics it had
>> > collected so far, then exit. It now seems to just exit without
>> > printing any of the statistics.
>>
>> Strange, it works for me, both in simple and in -p mode.
>> For example:
>>
>> $ strace -c cat & sleep 1 && kill -INT $!
>> [1] 19981
>> Process 19985 detached
>> % time seconds usecs/call calls errors syscall
>> ------ ----------- ----------- --------- --------- ----------------
>> $ 27.65 0.000060 8 8 mmap
>> 14.29 0.000031 8 4 mprotect
>> 10.14 0.000022 6 4 fstat
>> 7.83 0.000017 9 2 open
>> 7.83 0.000017 4 4 brk
>> 6.45 0.000014 7 2 1 read
>> 5.53 0.000012 12 1 1 access
>> 5.07 0.000011 6 2 fadvise64
>> 4.61 0.000010 5 2 close
>> 4.61 0.000010 10 1 munmap
>> 3.69 0.000008 8 1 execve
>> 2.30 0.000005 5 1 arch_prctl
>> ------ ----------- ----------- --------- --------- ----------------
>> 100.00 0.000217 32 2 total
>> [1]+ Done strace -c cat
>>
>> $ sleep 2 && sleep 2 & sleep 1; strace -cp $! & sleep 2 && kill -INT $!
>> [1] 19986
>> [2] 19989
>> Process 19986 attached
>> Process 19986 detached
>> % time seconds usecs/call calls errors syscall
>> ------ ----------- ----------- --------- --------- ----------------
>> $ 80.77 0.000710 355 2 1 wait4
>> 15.81 0.000139 139 1 clone
>> 2.62 0.000023 4 6 rt_sigprocmask
>> 0.46 0.000004 2 2 rt_sigaction
>> 0.34 0.000003 3 1 rt_sigreturn
>> ------ ----------- ----------- --------- --------- ----------------
>> 100.00 0.000879 12 1 total
>> [2]+ Done strace -cp $!
>> [1]- Done sleep 2 && sleep 2
>>
>> You aren't using -I1 option, are you?
>>
>>
>> --
>> ldv
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20140509/c7d2f15e/attachment.html>
More information about the Strace-devel
mailing list