fix: filename history needs a rework in the next release
[lttngtop.git] / utils / lttngtrace
CommitLineData
534a2bcd
JD
1#!/bin/bash
2
3# Wrapper to setup a live session on localhost and read it in text mode live
4
5SESSION_NAME="lttngtop-live-simple-$RANDOM"
6
7destroy()
8{
9 lttng destroy $SESSION_NAME >/dev/null
10 rm -rf $HOME/lttng-traces/$HOSTNAME/${SESSION_NAME}*
11 exit 0
12}
13
14if test "$1" = "-h" -o "$1" = "--help"; then
15 echo "usage : $0 [OPTIONS] [program [program-options]]"
16 echo "OPTIONS :"
26e46dde
JD
17 echo " -f Follow threads associated with selected PIDs"
18 echo " -p Comma-separated list of PIDs to display (in addition to the eventual executed program)"
19 echo " -n Comma-separated list of procnames to display (in addition to the eventual executed program)"
20 echo " -a In textdump mode, display all events but write in bold the processes we are interested in (-f and -p)"
21 echo " -k kprobes to insert (same format as lttng enable-event, can be repeated)"
22 echo " -o <filename> In textdump, output the log in <filename>"
534a2bcd
JD
23 exit 0
24fi
25
26pgrep -u root lttng-sessiond >/dev/null
27if test $? != 0; then
28 echo "Starting lttng-sessiond as root (trying sudo, start manually if \
29it fails)"
30 sudo lttng-sessiond -d
31 if test $? != 0; then
32 exit 1
33 fi
34fi
35
36pgrep lttng-relayd >/dev/null
37if test $? != 0; then
38 echo "Starting lttng-relayd as your current user, start manually if \
39it fails"
40 lttng-relayd -d
41 if test $? != 0; then
42 exit 1
43 fi
44fi
45
46SUDO=""
47groups|grep tracing >/dev/null
48if test $? != 0; then
49 echo "You are not a member of the tracing group, so you need root \
50access, the script will try with sudo"
51 SUDO="sudo"
52fi
53
54# check if lttng command if in the path
55# check if the user can execute the command (with sudo if not in tracing group)
56# check if lttng-modules is installed
57$SUDO lttng list -k | grep sched_switch >/dev/null
58if test $? != 0; then
59 echo "Something went wrong executing \"$SUDO lttng list -k | grep sched_switch\", \
60try to fix the problem manually and then start the script again"
61fi
62
63# if our random session name was already in use, add more randomness...
64$SUDO lttng list | grep $SESSION_NAME
65if test $? = 0; then
66 SESSION_NAME="$SESSION_NAME-$RANDOM"
67fi
68$SUDO lttng list | grep $SESSION_NAME
69if test $? = 0; then
70 echo "Cannot create a random session name, something must be wrong"
71 exit 2
72fi
73
74lttng create $SESSION_NAME --live 1000000 -U net://localhost >/dev/null
75[[ $? != 0 ]] && exit 2
76
77trap "destroy" SIGINT SIGTERM
78
79lttng enable-event -s $SESSION_NAME -u -a >/dev/null
80lttng add-context -s $SESSION_NAME -u -t vpid -t procname -t vtid >/dev/null
81
82lttng enable-event -s $SESSION_NAME -k lttng_statedump_start,lttng_statedump_end,lttng_statedump_process_state,lttng_statedump_file_descriptor,lttng_statedump_vm_map,lttng_statedump_network_interface,lttng_statedump_interrupt,sched_process_free,sched_switch,sched_process_fork >/dev/null
83[[ $? != 0 ]] && exit 2
84lttng enable-event -s $SESSION_NAME -k --syscall -a >/dev/null
85[[ $? != 0 ]] && exit 2
86lttng add-context -s $SESSION_NAME -k -t pid -t procname -t tid -t ppid >/dev/null
87[[ $? != 0 ]] && exit 2
88# if you want to add Perf counters, do something like that :
89#lttng add-context -s $SESSION_NAME -k -t perf:cache-misses -t perf:major-faults -t perf:branch-load-misses >/dev/null
90
91LTTNGTOPARGS=""
92PROG=""
93
94while [ "$1" != "" ]; do
95 if test "$1" = "-p"; then
96 shift
97 LTTNGTOPARGS="$LTTNGTOPARGS -p $1"
98 shift
99 elif test "$1" = "-k"; then
100 shift
101 lttng enable-event -k -s $SESSION_NAME "probe-$1" --probe $1 >/dev/null
102 shift
103 elif test "$1" = "-o"; then
104 shift
105 LTTNGTOPARGS="$LTTNGTOPARGS -o $1"
106 shift
26e46dde
JD
107 elif test "$1" = "-n"; then
108 shift
109 LTTNGTOPARGS="$LTTNGTOPARGS -n $1"
110 shift
534a2bcd
JD
111 elif test "${1:0:1}" = "-"; then
112 LTTNGTOPARGS="$LTTNGTOPARGS $1"
113 shift
114 else
115 PROG=$@
116 break
117 fi
118done
119
120if test ! -z "$PROG"; then
121 PROG="-- $PROG"
122fi
123
124lttng start $SESSION_NAME >/dev/null
125[[ $? != 0 ]] && exit 2
126
127s=$(lttngtop -r net://localhost | grep $SESSION_NAME)
128if test $? != 0; then
129 echo "Problem executing lttngtop -r net://localhost | grep $SESSION_NAME"
130 exit 1
131fi
132lttngtop -t -r $(echo $s|cut -d' ' -f1) $LTTNGTOPARGS $PROG
133
134destroy
This page took 0.02694 seconds and 4 git commands to generate.