xref: /aosp_15_r20/external/bcc/tools/reset-trace_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of reset-trace, for Linux bcc/BPF.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard WorkerYou will probably never need this tool. If you kill -9 a bcc tool (plus other
5*387f9dfdSAndroid Build Coastguard Workersignals, like SIGTERM), or if a bcc tool crashes, then kernel tracing can be
6*387f9dfdSAndroid Build Coastguard Workerleft in a semi-enabled state. It's not as bad as it sounds: there may just be
7*387f9dfdSAndroid Build Coastguard Workeroverhead for writing to ring buffers that are never read. This tool can be
8*387f9dfdSAndroid Build Coastguard Workerused to clean up the tracing state, and reset and disable active tracing.
9*387f9dfdSAndroid Build Coastguard Worker
10*387f9dfdSAndroid Build Coastguard WorkerWARNING: Make sure no other tracing sessions are active, as it will likely
11*387f9dfdSAndroid Build Coastguard Workerstop them from functioning (perhaps ungracefully).
12*387f9dfdSAndroid Build Coastguard Worker
13*387f9dfdSAndroid Build Coastguard WorkerThis specifically clears the state in at least the following files in
14*387f9dfdSAndroid Build Coastguard Worker/sys/kernel/debug/tracing: kprobe_events, uprobe_events, trace_pipe.
15*387f9dfdSAndroid Build Coastguard WorkerOther tracing facilities (ftrace) are checked, and if not in an expected state,
16*387f9dfdSAndroid Build Coastguard Workera note is printed. All tracing files can be reset with -F for force, but this
17*387f9dfdSAndroid Build Coastguard Workerwill interfere with any other running tracing sessions (eg, ftrace).
18*387f9dfdSAndroid Build Coastguard Worker
19*387f9dfdSAndroid Build Coastguard WorkerHere's an example:
20*387f9dfdSAndroid Build Coastguard Worker
21*387f9dfdSAndroid Build Coastguard Worker# ./reset-trace.sh
22*387f9dfdSAndroid Build Coastguard Worker#
23*387f9dfdSAndroid Build Coastguard Worker
24*387f9dfdSAndroid Build Coastguard WorkerThat's it.
25*387f9dfdSAndroid Build Coastguard Worker
26*387f9dfdSAndroid Build Coastguard Worker
27*387f9dfdSAndroid Build Coastguard WorkerYou can use -v to see what it does:
28*387f9dfdSAndroid Build Coastguard Worker
29*387f9dfdSAndroid Build Coastguard Worker# ./reset-trace.sh -v
30*387f9dfdSAndroid Build Coastguard WorkerResetting tracing state...
31*387f9dfdSAndroid Build Coastguard Worker
32*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/kprobe_events
33*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/uprobe_events
34*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/trace
35*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/current_tracer
36*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/set_ftrace_filter
37*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/set_graph_function
38*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/set_ftrace_pid
39*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/events/enable
40*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/tracing_thresh
41*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/tracing_on
42*387f9dfdSAndroid Build Coastguard Worker
43*387f9dfdSAndroid Build Coastguard WorkerDone.
44*387f9dfdSAndroid Build Coastguard Worker
45*387f9dfdSAndroid Build Coastguard WorkerIn this example, no resetting was necessary.
46*387f9dfdSAndroid Build Coastguard Worker
47*387f9dfdSAndroid Build Coastguard Worker
48*387f9dfdSAndroid Build Coastguard WorkerHere's an example of actually needing it:
49*387f9dfdSAndroid Build Coastguard Worker
50*387f9dfdSAndroid Build Coastguard Worker# ./funccount 'bash:r*'
51*387f9dfdSAndroid Build Coastguard WorkerTracing 317 functions for "bash:r*"... Hit Ctrl-C to end.
52*387f9dfdSAndroid Build Coastguard Worker^C
53*387f9dfdSAndroid Build Coastguard WorkerFUNC                                    COUNT
54*387f9dfdSAndroid Build Coastguard Workerrl_free_undo_list                           1
55*387f9dfdSAndroid Build Coastguard Workerrl_deprep_terminal                          1
56*387f9dfdSAndroid Build Coastguard Workerreadline_internal_teardown                  1
57*387f9dfdSAndroid Build Coastguard Workerrl_on_new_line                              1
58*387f9dfdSAndroid Build Coastguard Workerrl_crlf                                     1
59*387f9dfdSAndroid Build Coastguard Workerrl_clear_signals                            1
60*387f9dfdSAndroid Build Coastguard Workerrl_prep_terminal                            1
61*387f9dfdSAndroid Build Coastguard Workerrl_reset_line_state                         1
62*387f9dfdSAndroid Build Coastguard Workerrl_initialize                               1
63*387f9dfdSAndroid Build Coastguard Workerrl_newline                                  1
64*387f9dfdSAndroid Build Coastguard Workerreadline_internal_setup                     1
65*387f9dfdSAndroid Build Coastguard Workerrl_set_screen_size                          1
66*387f9dfdSAndroid Build Coastguard Workerreadline                                    1
67*387f9dfdSAndroid Build Coastguard Workerrl_set_signals                              1
68*387f9dfdSAndroid Build Coastguard Workerrl_expand_prompt                            1
69*387f9dfdSAndroid Build Coastguard Workerreplace_history_data                        1
70*387f9dfdSAndroid Build Coastguard Workerrl_set_prompt                               1
71*387f9dfdSAndroid Build Coastguard Workerrl_add_undo                                 1
72*387f9dfdSAndroid Build Coastguard Workerrl_insert_text                              2
73*387f9dfdSAndroid Build Coastguard Workerrl_insert                                   2
74*387f9dfdSAndroid Build Coastguard Workerrl_redisplay                                3
75*387f9dfdSAndroid Build Coastguard Workerrl_read_key                                 3
76*387f9dfdSAndroid Build Coastguard Workerrl_getc                                     3
77*387f9dfdSAndroid Build Coastguard Workerreadline_internal_char                      3
78*387f9dfdSAndroid Build Coastguard Workerrestore_parser_state                        6
79*387f9dfdSAndroid Build Coastguard Workerreap_dead_jobs                              6
80*387f9dfdSAndroid Build Coastguard Workerreset_parser                                6
81*387f9dfdSAndroid Build Coastguard Workerrestore_input_line_state                    6
82*387f9dfdSAndroid Build Coastguard Workerrealloc                                     7
83*387f9dfdSAndroid Build Coastguard Workerread_octal                                 10
84*387f9dfdSAndroid Build Coastguard Workerread_tty_modified                          13
85*387f9dfdSAndroid Build Coastguard Workerrun_exit_trap                              13
86*387f9dfdSAndroid Build Coastguard Workerredirection_expand                         13
87*387f9dfdSAndroid Build Coastguard Workerrestore_pipestatus_array                   18
88*387f9dfdSAndroid Build Coastguard Workerreader_loop                                20
89*387f9dfdSAndroid Build Coastguard Workerrun_return_trap                            21
90*387f9dfdSAndroid Build Coastguard Workerremember_args                              25
91*387f9dfdSAndroid Build Coastguard Workerreset_signal_handlers                      30
92*387f9dfdSAndroid Build Coastguard Workerremove_quoted_escapes                      60
93*387f9dfdSAndroid Build Coastguard Workerrun_unwind_frame                          102
94*387f9dfdSAndroid Build Coastguard Workerreset_terminating_signals                 125
95*387f9dfdSAndroid Build Coastguard Workerrestore_original_signals                  139
96*387f9dfdSAndroid Build Coastguard Workerreset_internal_getopt                     405
97*387f9dfdSAndroid Build Coastguard Workerrun_debug_trap                            719
98*387f9dfdSAndroid Build Coastguard Workerread_command                              940
99*387f9dfdSAndroid Build Coastguard Workerremove_quoted_nulls                      1830
100*387f9dfdSAndroid Build Coastguard Workerrun_pending_traps                        3207
101*387f9dfdSAndroid Build Coastguard Worker^C
102*387f9dfdSAndroid Build Coastguard Worker^C
103*387f9dfdSAndroid Build Coastguard Worker^C
104*387f9dfdSAndroid Build Coastguard Worker
105*387f9dfdSAndroid Build Coastguard WorkerI've traced 317 functions using funccount, and when I hit Ctrl-C, funccount is
106*387f9dfdSAndroid Build Coastguard Workernot exiting (it can normally take many seconds, but this really looks stuck):
107*387f9dfdSAndroid Build Coastguard Worker
108*387f9dfdSAndroid Build Coastguard Worker# pidstat 1
109*387f9dfdSAndroid Build Coastguard WorkerLinux 4.9.0-rc1-virtual (bgregg-xenial-bpf-i-xxx) 	10/18/2016 	_x86_64_	(8 CPU)
110*387f9dfdSAndroid Build Coastguard Worker
111*387f9dfdSAndroid Build Coastguard Worker10:00:33 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
112*387f9dfdSAndroid Build Coastguard Worker10:00:34 PM 60004      3277    0.00    0.98    0.00    0.98     0  redis-server
113*387f9dfdSAndroid Build Coastguard Worker10:00:34 PM     0     27980   87.25   10.78    0.00   98.04     3  funccount.py
114*387f9dfdSAndroid Build Coastguard Worker10:00:34 PM     0     29965    0.00    0.98    0.00    0.98     6  pidstat
115*387f9dfdSAndroid Build Coastguard Worker
116*387f9dfdSAndroid Build Coastguard Worker10:00:34 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
117*387f9dfdSAndroid Build Coastguard Worker10:00:35 PM 65534      3276    0.00    1.00    0.00    1.00     2  multilog
118*387f9dfdSAndroid Build Coastguard Worker10:00:35 PM     0     27980   77.00   23.00    0.00  100.00     3  funccount.py
119*387f9dfdSAndroid Build Coastguard Worker10:00:35 PM     0     29965    0.00    1.00    0.00    1.00     6  pidstat
120*387f9dfdSAndroid Build Coastguard Worker10:00:35 PM 60004     29990    0.00    1.00    0.00    1.00     6  catalina.sh
121*387f9dfdSAndroid Build Coastguard Worker
122*387f9dfdSAndroid Build Coastguard Workerfunccount looks a lot like it's in an infinite loop (I can use a stack-sampling
123*387f9dfdSAndroid Build Coastguard Workerprofiler to confirm). This is a known bug (#665) and may be fixed by the time
124*387f9dfdSAndroid Build Coastguard Workeryou read this. But right now it's a good example of needing reset-trace.
125*387f9dfdSAndroid Build Coastguard Worker
126*387f9dfdSAndroid Build Coastguard WorkerI'll send a SIGTERM, before resorting to a SIGKILL:
127*387f9dfdSAndroid Build Coastguard Worker
128*387f9dfdSAndroid Build Coastguard Worker# kill 27980
129*387f9dfdSAndroid Build Coastguard WorkerTerminated
130*387f9dfdSAndroid Build Coastguard Worker
131*387f9dfdSAndroid Build Coastguard WorkerOk, so the process is now gone, but it did leave tracing in a semi-enabled
132*387f9dfdSAndroid Build Coastguard Workerstate. Using reset-trace:
133*387f9dfdSAndroid Build Coastguard Worker
134*387f9dfdSAndroid Build Coastguard Worker# ./reset-trace.sh -v
135*387f9dfdSAndroid Build Coastguard WorkerResetting tracing state...
136*387f9dfdSAndroid Build Coastguard Worker
137*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/kprobe_events
138*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/uprobe_events
139*387f9dfdSAndroid Build Coastguard WorkerNeeded to reset /sys/kernel/debug/tracing/uprobe_events
140*387f9dfdSAndroid Build Coastguard Workeruprobe_events, before (line enumerated):
141*387f9dfdSAndroid Build Coastguard Worker     1	p:uprobes/p__bin_bash_0xa2540 /bin/bash:0x00000000000a2540
142*387f9dfdSAndroid Build Coastguard Worker     2	p:uprobes/p__bin_bash_0x21220 /bin/bash:0x0000000000021220
143*387f9dfdSAndroid Build Coastguard Worker     3	p:uprobes/p__bin_bash_0x78530 /bin/bash:0x0000000000078530
144*387f9dfdSAndroid Build Coastguard Worker     4	p:uprobes/p__bin_bash_0xa3840 /bin/bash:0x00000000000a3840
145*387f9dfdSAndroid Build Coastguard Worker     5	p:uprobes/p__bin_bash_0x9c550 /bin/bash:0x000000000009c550
146*387f9dfdSAndroid Build Coastguard Worker     6	p:uprobes/p__bin_bash_0x5e360 /bin/bash:0x000000000005e360
147*387f9dfdSAndroid Build Coastguard Worker     7	p:uprobes/p__bin_bash_0xb2630 /bin/bash:0x00000000000b2630
148*387f9dfdSAndroid Build Coastguard Worker     8	p:uprobes/p__bin_bash_0xb1e70 /bin/bash:0x00000000000b1e70
149*387f9dfdSAndroid Build Coastguard Worker     9	p:uprobes/p__bin_bash_0xb2540 /bin/bash:0x00000000000b2540
150*387f9dfdSAndroid Build Coastguard Worker    10	p:uprobes/p__bin_bash_0xb16e0 /bin/bash:0x00000000000b16e0
151*387f9dfdSAndroid Build Coastguard Worker[...]
152*387f9dfdSAndroid Build Coastguard Worker   312	p:uprobes/p__bin_bash_0xa80b0 /bin/bash:0x00000000000a80b0
153*387f9dfdSAndroid Build Coastguard Worker   313	p:uprobes/p__bin_bash_0x9e280 /bin/bash:0x000000000009e280
154*387f9dfdSAndroid Build Coastguard Worker   314	p:uprobes/p__bin_bash_0x9e100 /bin/bash:0x000000000009e100
155*387f9dfdSAndroid Build Coastguard Worker   315	p:uprobes/p__bin_bash_0xb2bd0 /bin/bash:0x00000000000b2bd0
156*387f9dfdSAndroid Build Coastguard Worker   316	p:uprobes/p__bin_bash_0x9d9c0 /bin/bash:0x000000000009d9c0
157*387f9dfdSAndroid Build Coastguard Worker   317	p:uprobes/p__bin_bash_0x4a930 /bin/bash:0x000000000004a930
158*387f9dfdSAndroid Build Coastguard Workeruprobe_events, after (line enumerated):
159*387f9dfdSAndroid Build Coastguard Worker
160*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/trace
161*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/current_tracer
162*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/set_ftrace_filter
163*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/set_graph_function
164*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/set_ftrace_pid
165*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/events/enable
166*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/tracing_thresh
167*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/tracing_on
168*387f9dfdSAndroid Build Coastguard Worker
169*387f9dfdSAndroid Build Coastguard WorkerDone.
170*387f9dfdSAndroid Build Coastguard Worker
171*387f9dfdSAndroid Build Coastguard WorkerNow looks clean. I did truncate the output here: there were a few hundred lines
172*387f9dfdSAndroid Build Coastguard Workerfrom uprobe_events.
173*387f9dfdSAndroid Build Coastguard Worker
174*387f9dfdSAndroid Build Coastguard WorkerHere's the same situation, but without the verbose option:
175*387f9dfdSAndroid Build Coastguard Worker
176*387f9dfdSAndroid Build Coastguard Worker# ./reset-trace.sh
177*387f9dfdSAndroid Build Coastguard WorkerNeeded to reset /sys/kernel/debug/tracing/uprobe_events
178*387f9dfdSAndroid Build Coastguard Worker#
179*387f9dfdSAndroid Build Coastguard Worker
180*387f9dfdSAndroid Build Coastguard WorkerAnd again with quiet:
181*387f9dfdSAndroid Build Coastguard Worker
182*387f9dfdSAndroid Build Coastguard Worker# ./reset-trace.sh -q
183*387f9dfdSAndroid Build Coastguard Worker#
184*387f9dfdSAndroid Build Coastguard Worker
185*387f9dfdSAndroid Build Coastguard Worker
186*387f9dfdSAndroid Build Coastguard WorkerHere is an example of reset-trace detecting an unrelated tracing session:
187*387f9dfdSAndroid Build Coastguard Worker
188*387f9dfdSAndroid Build Coastguard Worker# ./reset-trace.sh
189*387f9dfdSAndroid Build Coastguard WorkerNoticed unrelated tracing file /sys/kernel/debug/tracing/set_ftrace_filter isn't set as expected. Not resetting (-F to force, -v for verbose).
190*387f9dfdSAndroid Build Coastguard Worker
191*387f9dfdSAndroid Build Coastguard WorkerAnd verbose:
192*387f9dfdSAndroid Build Coastguard Worker
193*387f9dfdSAndroid Build Coastguard Worker# ./reset-trace.sh -v
194*387f9dfdSAndroid Build Coastguard WorkerResetting tracing state...
195*387f9dfdSAndroid Build Coastguard Worker
196*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/kprobe_events
197*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/uprobe_events
198*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/trace
199*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/current_tracer
200*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/set_ftrace_filter
201*387f9dfdSAndroid Build Coastguard WorkerNoticed unrelated tracing file /sys/kernel/debug/tracing/set_ftrace_filter isn't set as expected. Not resetting (-F to force, -v for verbose).
202*387f9dfdSAndroid Build Coastguard WorkerContents of set_ftrace_filter is (line enumerated):
203*387f9dfdSAndroid Build Coastguard Worker     1	tcp_send_mss
204*387f9dfdSAndroid Build Coastguard Worker     2	tcp_sendpage
205*387f9dfdSAndroid Build Coastguard Worker     3	tcp_sendmsg
206*387f9dfdSAndroid Build Coastguard Worker     4	tcp_send_dupack
207*387f9dfdSAndroid Build Coastguard Worker     5	tcp_send_challenge_ack.isra.53
208*387f9dfdSAndroid Build Coastguard Worker     6	tcp_send_rcvq
209*387f9dfdSAndroid Build Coastguard Worker     7	tcp_send_ack
210*387f9dfdSAndroid Build Coastguard Worker     8	tcp_send_loss_probe
211*387f9dfdSAndroid Build Coastguard Worker     9	tcp_send_fin
212*387f9dfdSAndroid Build Coastguard Worker    10	tcp_send_active_reset
213*387f9dfdSAndroid Build Coastguard Worker    11	tcp_send_synack
214*387f9dfdSAndroid Build Coastguard Worker    12	tcp_send_delayed_ack
215*387f9dfdSAndroid Build Coastguard Worker    13	tcp_send_window_probe
216*387f9dfdSAndroid Build Coastguard Worker    14	tcp_send_probe0
217*387f9dfdSAndroid Build Coastguard WorkerExpected "".
218*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/set_graph_function
219*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/set_ftrace_pid
220*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/events/enable
221*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/tracing_thresh
222*387f9dfdSAndroid Build Coastguard WorkerChecking /sys/kernel/debug/tracing/tracing_on
223*387f9dfdSAndroid Build Coastguard Worker
224*387f9dfdSAndroid Build Coastguard WorkerDone.
225*387f9dfdSAndroid Build Coastguard Worker
226*387f9dfdSAndroid Build Coastguard WorkerSo this file is not currently used by bcc, but it may be useful to know that
227*387f9dfdSAndroid Build Coastguard Workerit's not in the default state -- something is either using it or has left it
228*387f9dfdSAndroid Build Coastguard Workerenabled. These files can be reset with -F, but that may break other tools that
229*387f9dfdSAndroid Build Coastguard Workerare currently using them.
230*387f9dfdSAndroid Build Coastguard Worker
231*387f9dfdSAndroid Build Coastguard Worker
232*387f9dfdSAndroid Build Coastguard WorkerUse -h to print the USAGE message:
233*387f9dfdSAndroid Build Coastguard Worker
234*387f9dfdSAndroid Build Coastguard Worker# ./reset-trace.sh -h
235*387f9dfdSAndroid Build Coastguard WorkerUSAGE: reset-trace [-Fhqv]
236*387f9dfdSAndroid Build Coastguard Worker                 -F             # force: reset all tracing files
237*387f9dfdSAndroid Build Coastguard Worker                 -v             # verbose: print details while working
238*387f9dfdSAndroid Build Coastguard Worker                 -h             # this usage message
239*387f9dfdSAndroid Build Coastguard Worker                 -q             # quiet: no output
240*387f9dfdSAndroid Build Coastguard Worker  eg,
241*387f9dfdSAndroid Build Coastguard Worker       reset-trace              # disable semi-enabled tracing
242