Utilisation de strace avec tmux

Comment suivre l’exécution d’un programme avec strace? En utilisant tmux!

On va avoir deux panneaux:

  • un pour l’exécution de la commande;
  • le second dédié à l’affichage de strace

Ne pas oublier que l’on peut rechercher dans tout ce qui est affiché dans un panneau avec tmux

#!/bin/bash

TMPDIR=/tmp
FIFODIR=$(mktemp -p "${TMPDIR:-.}" -d strace-XXXX) || exit 1
FIFOPATH=$FIFODIR/fifo
mkfifo "$FIFOPATH" || { rmdir "$TMPDIR"; exit 1; }

COMMAND=$1
shift
ARGS=$@
PANE_ID=$(tmux if-shell "[ $(($(tmux display -p '8*#{pane_width}-20*#{pane_height}'))) -lt 0 ]" "splitw -v -d -c '#{pane_current_path}' -P -F '#{pane_id}' cat $FIFOPATH" "splitw -h -d -c '#{pane_current_path}' -P -F '#{pane_id}' cat $FIFOPATH")
tmux set-option -t $PANE_ID -p @mytitle "strace:$COMMAND"
tmux set-option -t $PANE_ID -p remain-on-exit on
strace $COMMAND $ARGS 2> $FIFOPATH

Ainsi, l’outil strace envoi sa sortie sur le canal stderr qui est lui-même renvoyé vers une fifo qui est ensuite affichée dans un panneau tmux

Dernière modification: 02/04/2023