|  | .\" Copyright (c) 2017 The strace developers. | 
|  | .\" All rights reserved. | 
|  | .\" | 
|  | .\" Redistribution and use in source and binary forms, with or without | 
|  | .\" modification, are permitted provided that the following conditions | 
|  | .\" are met: | 
|  | .\" 1. Redistributions of source code must retain the above copyright | 
|  | .\"    notice, this list of conditions and the following disclaimer. | 
|  | .\" 2. Redistributions in binary form must reproduce the above copyright | 
|  | .\"    notice, this list of conditions and the following disclaimer in the | 
|  | .\"    documentation and/or other materials provided with the distribution. | 
|  | .\" 3. The name of the author may not be used to endorse or promote products | 
|  | .\"    derived from this software without specific prior written permission. | 
|  | .\" | 
|  | .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 
|  | .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 
|  | .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 
|  | .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 
|  | .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 
|  | .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
|  | .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
|  | .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
|  | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 
|  | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
|  | .\" | 
|  | .\" Required option. | 
|  | .de OR | 
|  | .  ie \\n(.$-1 \ | 
|  | .    RI "\fB\\$1\fP" "\ \\$2" | 
|  | .  el \ | 
|  | .    BR "\\$1" | 
|  | .. | 
|  | .\" | 
|  | .TH STRACE-LOG-MERGE 1 "2018-07-07" "strace 4.25" | 
|  | .\" | 
|  | .SH NAME | 
|  | strace-log-merge \- merge strace \-ff \-tt output | 
|  | .\" | 
|  | .SH SYNOPSIS | 
|  | .SY strace\-log\-merge | 
|  | .IR STRACE_LOG | 
|  | .YS | 
|  | .SY strace\-log\-merge | 
|  | .OR \-\-help | 
|  | .YS | 
|  | .\" | 
|  | .SH DESCRIPTION | 
|  | .B strace\-log\-merge | 
|  | merges the output of | 
|  | .B strace \-ff \-tt[t] | 
|  | command, prepending PID to each line and sorting the result using time stamp as | 
|  | a key. | 
|  | .\" | 
|  | .SH OPTIONS | 
|  | .\" | 
|  | .TP | 
|  | .B \-\-help | 
|  | Show program usage and exit. | 
|  | .TP | 
|  | .I STRACE_LOG | 
|  | Output file name prefix of files produced by a | 
|  | .B strace -ff -tt[t] | 
|  | command. | 
|  | .SH EXIT STATUS | 
|  | .TP | 
|  | .B 0 | 
|  | Success | 
|  | .TP | 
|  | .B Non-zero | 
|  | Error occurred: either no argument specified (in that case a usage is printed), | 
|  | or something went wrong during the processing of | 
|  | .IR STRACE_LOG ".*" | 
|  | files. | 
|  | .\" | 
|  | .SH USAGE EXAMPLE | 
|  | .sp | 
|  | .nf | 
|  | .ft CW | 
|  | $ strace -o sleepy -ff -tt -e trace=execve,nanosleep \\ | 
|  | sh -c 'sleep 0.1 & sleep 0.2 & sleep 0.3' | 
|  | $ strace-log-merge sleepy | fold -w 72 -s | 
|  | 13475 21:13:52.040837 execve("/bin/sh", ["sh", "-c", "sleep 0.1 & sleep | 
|  | 0.2 & sleep 0."...], 0x7ffde54b2450 /* 33 vars */) = 0 | 
|  | 13478 21:13:52.044050 execve("/bin/sleep", ["sleep", "0.3"], | 
|  | 0x5631be4f87a8 /* 33 vars */) = 0 | 
|  | 13476 21:13:52.044269 execve("/bin/sleep", ["sleep", "0.1"], | 
|  | 0x5631be4f87a8 /* 33 vars */) = 0 | 
|  | 13477 21:13:52.044389 execve("/bin/sleep", ["sleep", "0.2"], | 
|  | 0x5631be4f87a8 /* 33 vars */) = 0 | 
|  | 13478 21:13:52.046207 nanosleep({tv_sec=0, tv_nsec=300000000}, NULL) = 0 | 
|  | 13476 21:13:52.046303 nanosleep({tv_sec=0, tv_nsec=100000000}, NULL) = 0 | 
|  | 13477 21:13:52.046318 nanosleep({tv_sec=0, tv_nsec=200000000}, NULL) = 0 | 
|  | 13476 21:13:52.146852 +++ exited with 0 +++ | 
|  | 13475 21:13:52.146942 --- SIGCHLD {si_signo=SIGCHLD, | 
|  | si_code=CLD_EXITED, si_pid=13476, si_uid=1000, si_status=0, si_utime=0, | 
|  | si_stime=0} --- | 
|  | 13477 21:13:52.247782 +++ exited with 0 +++ | 
|  | 13475 21:13:52.247885 --- SIGCHLD {si_signo=SIGCHLD, | 
|  | si_code=CLD_EXITED, si_pid=13477, si_uid=1000, si_status=0, si_utime=0, | 
|  | si_stime=0} --- | 
|  | 13478 21:13:52.347680 +++ exited with 0 +++ | 
|  | 13475 21:13:52.347786 --- SIGCHLD {si_signo=SIGCHLD, | 
|  | si_code=CLD_EXITED, si_pid=13478, si_uid=1000, si_status=0, si_utime=0, | 
|  | si_stime=0} --- | 
|  | 13475 21:13:52.348069 +++ exited with 0 +++ | 
|  | .ft R | 
|  | .fi | 
|  | .sp | 
|  | .\" | 
|  | .SH NOTES | 
|  | .I strace-log-merge | 
|  | does not work well with | 
|  | .B strace | 
|  | logs generated by | 
|  | .B strace -tt | 
|  | invocation that pass midnight, as those lack the information required | 
|  | for the proper sorting. | 
|  | Employing the | 
|  | .B -ttt | 
|  | option in the respective | 
|  | .B strace | 
|  | invocation should solve the problem. | 
|  | .\" | 
|  | .SH BUGS | 
|  | .I strace-log-merge | 
|  | does not perform any checks whether the files specified are in the correct | 
|  | format and implies that only files from a single | 
|  | .I strace | 
|  | session match | 
|  | .IR STRACE_LOG ".*" | 
|  | glob pattern. | 
|  | .\" | 
|  | .SH HISTORY | 
|  | The initial version of | 
|  | .I strace-log-merge | 
|  | was written by Denys Vlasenko in 2012. | 
|  | .\" | 
|  | .SH REPORTING BUGS | 
|  | Problems with | 
|  | .B strace-log-merge | 
|  | should be reported to the | 
|  | .B strace | 
|  | mailing list at <strace\-devel@lists.strace.io>. | 
|  | .\" | 
|  | .SH "SEE ALSO" | 
|  | .BR strace (1) |