diff options
author | tv <tv@krebsco.de> | 2015-05-21 03:40:27 +0200 |
---|---|---|
committer | tv <tv@krebsco.de> | 2015-05-21 03:40:27 +0200 |
commit | 8531c869ad45529daae1c9c79526dac1362a5f1f (patch) | |
tree | bcc99af2eed1661b1a32dd30395d9ed98de60c66 /bin | |
parent | d3d7e97db204d6be3d03aa5648527b9c3cc2d196 (diff) |
backtrace: diverge
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/backtrace | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/bin/backtrace b/bin/backtrace index f8582ec..15d60a9 100755 --- a/bin/backtrace +++ b/bin/backtrace @@ -1,10 +1,12 @@ #! /bin/sh set -euf +exec >&2 + pid=$$ while :; do cd /proc/$pid - cmdline=$(cat cmdline | sed 's/\0/ /g;s/ $//') + cmdline=$(cat cmdline | tr '\0' ' ' | sed 's/ $//') ppid=$(grep PPid status | awk '{print$2}') printf '%5d %s\n' $pid "$cmdline" if [ $pid = 1 ]; then @@ -13,4 +15,18 @@ while :; do pid=$ppid fi done \ + | sed \ + "$(printf ' + s:\(/bin/sh \)%s/\([^ ]\+\):\e[32m\\2\e[m:g + s:%s/\([^ ]\+\):\e[32;1m\\1\e[m:g + ' \ + "$(dirname "$0" | bre-escape | sed 's/:/\\:/g')" \ + "$(dirname "$0" | bre-escape | sed 's/:/\\:/g')" \ + )" \ | tac + +ps='Press ^C to abort: ' +while :; do + printf '\e[K\e[31;1m%s\e[m' "$ps" + read -r _input +done |