init
This commit is contained in:
BIN
arm/bin/gdbserver
LFS
Executable file
BIN
arm/bin/gdbserver
LFS
Executable file
Binary file not shown.
BIN
arm/bin/gdbserver_debug
LFS
Executable file
BIN
arm/bin/gdbserver_debug
LFS
Executable file
Binary file not shown.
BIN
arm/bin/strace
LFS
Executable file
BIN
arm/bin/strace
LFS
Executable file
Binary file not shown.
90
arm/bin/strace-log-merge
Executable file
90
arm/bin/strace-log-merge
Executable file
@ -0,0 +1,90 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This script processes strace -ff -tt output. It merges the contents of all
|
||||
# STRACE_LOG.PID files and sorts them, printing result on the standard output.
|
||||
#
|
||||
# Copyright (c) 2012-2024 The strace developers.
|
||||
#
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
show_usage()
|
||||
{
|
||||
cat <<__EOF__
|
||||
Usage: ${0##*/} STRACE_LOG
|
||||
|
||||
Finds all STRACE_LOG.PID files, adds PID prefix to every line,
|
||||
then combines and sorts them, and prints result to standard output.
|
||||
|
||||
It is assumed that STRACE_LOGs were produced by strace with -tt[t]
|
||||
option which prints timestamps (otherwise sorting won't do any good).
|
||||
__EOF__
|
||||
}
|
||||
|
||||
dd='\([0-9][0-9]\)'
|
||||
ds='\([0-9][0-9]*\)'
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
show_usage >&2
|
||||
exit 1
|
||||
elif [ "$1" = '--help' ] || [ "$1" = '-h' ]; then
|
||||
show_usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
logfile=$1
|
||||
|
||||
iterate_logfiles()
|
||||
{
|
||||
local file suffix
|
||||
|
||||
for file in "$logfile".*; do
|
||||
[ -f "$file" ] || continue
|
||||
suffix=${file#"$logfile".}
|
||||
[ "$suffix" -gt 0 ] 2> /dev/null ||
|
||||
continue
|
||||
"$@" "$suffix" "$file"
|
||||
done
|
||||
}
|
||||
|
||||
max_suffix_length=0
|
||||
process_suffix()
|
||||
{
|
||||
local suffix len
|
||||
suffix="$1"; shift
|
||||
|
||||
len=${#suffix}
|
||||
if [ $len -gt $max_suffix_length ]; then
|
||||
max_suffix_length=$len
|
||||
fi
|
||||
}
|
||||
|
||||
process_logfile()
|
||||
{
|
||||
local suffix file pid
|
||||
suffix="$1"; shift
|
||||
file="$1"; shift
|
||||
|
||||
pid=$(printf "%-*s" $max_suffix_length $suffix)
|
||||
# Some strace logs have last line which is not '\n' terminated,
|
||||
# so add extra newline to every file.
|
||||
# Empty lines are removed later.
|
||||
sed -n "s/^\($dd:\)\?\($dd:\)\?\($ds\.\)\?$ds /\2\4\6\7 $pid \0/p" < "$file"
|
||||
echo
|
||||
}
|
||||
|
||||
iterate_logfiles process_suffix
|
||||
|
||||
[ $max_suffix_length -gt 0 ] || {
|
||||
echo >&2 "${0##*/}: $logfile: strace output not found"
|
||||
exit 1
|
||||
}
|
||||
|
||||
iterate_logfiles process_logfile |
|
||||
sort -s -n -k1,1 |
|
||||
sed -n 's/^[0-9][0-9]* //p' |
|
||||
grep -v '^$'
|
||||
|
||||
rc=$?
|
||||
[ $rc -eq 1 ] &&
|
||||
echo >&2 "${0##*/}: $logfile.* files do not look like log files produced by 'strace -tt'"
|
||||
exit $rc
|
||||
BIN
arm/bin/strace_debug
LFS
Executable file
BIN
arm/bin/strace_debug
LFS
Executable file
Binary file not shown.
126
arm/share/man/man1/strace-log-merge.1
Normal file
126
arm/share/man/man1/strace-log-merge.1
Normal file
@ -0,0 +1,126 @@
|
||||
.\" Copyright (c) 2017 The strace developers.
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
.\"
|
||||
.\" Required option.
|
||||
.de OR
|
||||
. ie \\n(.$-1 \
|
||||
. RI "\fB\\$1\fP" "\ \\$2"
|
||||
. el \
|
||||
. BR "\\$1"
|
||||
..
|
||||
.\"
|
||||
.TH STRACE-LOG-MERGE 1 "2022-01-01" "strace 6.13.0.37.b6c94"
|
||||
.\"
|
||||
.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)
|
||||
2095
arm/share/man/man1/strace.1
Normal file
2095
arm/share/man/man1/strace.1
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user