xref: /netbsd-src/external/cddl/dtracetoolkit/dist/Examples/pl_flow_example.txt (revision c29d51755812ace2e87aeefdb06cb2b4dac7087a)
1The following are examples of pl_flow.d.
2
3This is a simple script to trace the flow of Perl subroutines (functions).
4Here it traces the example program, Code/Perl/func_abc.pl.
5
6   # pl_flow.d
7     C TIME(us)          FILE             -- SUB
8     0 2979519183757     func_abc.pl      -> func_a
9     0 2979520190159     func_abc.pl        -> func_b
10     0 2979521200166     func_abc.pl          -> func_c
11     0 2979522210184     func_abc.pl          <- func_c
12     0 2979522210199     func_abc.pl        <- func_b
13     0 2979522210207     func_abc.pl      <- func_a
14   ^C
15
16As each subroutine is entered, the third column is indented by 2 spaces. This
17shows which subroutine is calling who - the output abovebegins by showing that
18func_a() began, and then called func_b().
19
20If the output looks shuffled, check the CPU "C" and "TIME" columns, and
21post sort based on TIME if necessary.
22
23See Notes/ALLflow_notes.txt for important notes about reading flow outputs.
24
25
26
27The following traces a Perl network interface statistics tool, "nicstat"
28version 0.99,
29
30# pl_flow.d
31  C TIME(us)         FILE             -- SUB
32  0 4181899422549    nicstat          -> BEGIN
33  0 4181899423048    strict.pm          -> bits
34  0 4181899423081    strict.pm          <- bits
35  0 4181899423105    strict.pm          -> import
36  0 4181899423126    strict.pm          <- import
37  0 4181899423133    nicstat          <- BEGIN
38  0 4181899423157    nicstat          -> BEGIN
39  0 4181899445634    Exporter.pm        -> import
40  0 4181899445730    Exporter.pm        <- import
41  0 4181899445743    nicstat          <- BEGIN
42  0 4181899445770    nicstat          -> BEGIN
43  0 4181899446066    Kstat.pm           -> BEGIN
44  0 4181899446076    strict.pm            -> import
45  0 4181899446087    strict.pm            <- import
46  0 4181899446094    Kstat.pm           <- BEGIN
47  0 4181899446116    Kstat.pm           -> BEGIN
48  0 4181899453669    DynaLoader.pm        -> BEGIN
49  0 4181899453810    vars.pm                -> BEGIN
50  0 4181899453821    vars.pm                <- BEGIN
51  0 4181899453921    vars.pm                -> BEGIN
52  0 4181899454494    warnings.pm              -> BEGIN
53  0 4181899455149    warnings.pm              <- BEGIN
54  0 4181899457183    register.pm              -> import
55  0 4181899457202    register.pm                -> mkMask
56  0 4181899457214    register.pm                <- mkMask
57  0 4181899457264    register.pm                -> mkMask
58  0 4181899457274    register.pm                <- mkMask
59  0 4181899457283    register.pm              <- import
60  0 4181899457290    vars.pm                <- BEGIN
61  0 4181899457316    vars.pm                -> BEGIN
62  0 4181899457324    strict.pm                -> import
63  0 4181899457332    strict.pm                  -> bits
64  0 4181899457345    strict.pm                  <- bits
65  0 4181899457353    strict.pm                <- import
66  0 4181899457359    vars.pm                <- BEGIN
67  0 4181899457652    vars.pm                -> import
68  0 4181899457703    vars.pm                <- import
69  0 4181899457710    DynaLoader.pm        <- BEGIN
70  0 4181899457758    DynaLoader.pm        -> BEGIN
71  0 4181899457883    Config.pm              -> BEGIN
72  0 4181899457890    strict.pm                -> import
73  0 4181899457899    strict.pm                <- import
74  0 4181899457906    Config.pm              <- BEGIN
75  0 4181899458038    Config.pm              -> BEGIN
76  0 4181899458045    strict.pm                -> unimport
77  0 4181899458053    strict.pm                  -> bits
78  0 4181899458063    strict.pm                  <- bits
79  0 4181899458077    strict.pm                <- unimport
80  0 4181899458084    Config.pm              <- BEGIN
81  0 4181899458426    Config.pm              -> TIEHASH
82  0 4181899458435    Config.pm              <- TIEHASH
83  0 4181899458476    Config.pm              -> import
84  0 4181899458493    Config.pm              <- import
85  0 4181899458500    DynaLoader.pm        <- BEGIN
86  0 4181899459978    AutoLoader.pm        -> BEGIN
87  0 4181899459990    strict.pm              -> import
88  0 4181899460033    strict.pm              <- import
89  0 4181899460064    AutoLoader.pm        <- BEGIN
90  0 4181899460088    AutoLoader.pm        -> BEGIN
91  0 4181899460096    AutoLoader.pm        <- BEGIN
92  0 4181899460187    AutoLoader.pm        -> BEGIN
93  0 4181899460199    AutoLoader.pm        <- BEGIN
94  0 4181899460582    AutoLoader.pm        -> BEGIN
95  0 4181899460590    strict.pm              -> unimport
96  0 4181899460598    strict.pm                -> bits
97  0 4181899460611    strict.pm                <- bits
98  0 4181899460619    strict.pm              <- unimport
99  0 4181899460625    AutoLoader.pm        <- BEGIN
100  0 4181899460830    AutoLoader.pm        -> BEGIN
101  0 4181899460838    strict.pm              -> unimport
102  0 4181899460845    strict.pm                -> bits
103  0 4181899460855    strict.pm                <- bits
104  0 4181899460862    strict.pm              <- unimport
105  0 4181899460869    AutoLoader.pm        <- BEGIN
106  0 4181899461092    AutoLoader.pm        -> BEGIN
107  0 4181899461100    strict.pm              -> unimport
108  0 4181899461107    strict.pm                -> bits
109  0 4181899461116    strict.pm                <- bits
110  0 4181899461124    strict.pm              <- unimport
111  0 4181899461130    AutoLoader.pm        <- BEGIN
112  0 4181899461238    Config.pm            -> FETCH
113  0 4181899461250    Config.pm            <- FETCH
114  0 4181899461264    Config.pm            -> FETCH
115  0 4181899461272    Config.pm            <- FETCH
116  0 4181899461282    Config.pm            -> FETCH
117  0 4181899461290    Config.pm            <- FETCH
118  0 4181899461299    Config.pm            -> FETCH
119  0 4181899461307    Config.pm            <- FETCH
120  0 4181899461403    Kstat.pm           <- BEGIN
121  0 4181899461432    Kstat.pm           -> BEGIN
122  0 4181899461440    vars.pm              -> import
123  0 4181899461476    vars.pm              <- import
124  0 4181899461483    Kstat.pm           <- BEGIN
125  0 4181899461539    DynaLoader.pm      -> bootstrap
126  0 4181899461769    DynaLoader.pm        -> dl_load_flags
127  0 4181899461777    DynaLoader.pm        <- dl_load_flags
128  0 4181899462208    DynaLoader.pm      <- bootstrap
129  0 4181899462231    nicstat          <- BEGIN
130  0 4181899468306    Std.pm           -> getopts
131  0 4181899468351    Exporter.pm        -> import
132  0 4181899468390    Exporter.pm        <- import
133  0 4181899468405    Std.pm           <- getopts
134  0 4181899468426    nicstat          -> find_nets
135  0 4181899521011    nicstat          <- find_nets
136  0 4181899521415    nicstat          -> fetch_net_data
137  0 4181899564973    nicstat          <- fetch_net_data
138  0 4181899565526    nicstat          -> print_neat
139  0 4181899565672    nicstat          <- print_neat
140  0 4181899565680    nicstat          -> print_neat
141  0 4181899565902    nicstat          <- print_neat
142  0 4181899565909    nicstat          -> print_neat
143  0 4181899566033    nicstat          <- print_neat
144  0 4181899566039    nicstat          -> print_neat
145  0 4181899566165    nicstat          <- print_neat
146  0 4181899566172    nicstat          -> print_neat
147  0 4181899566331    nicstat          <- print_neat
148  0 4181899566338    nicstat          -> print_neat
149  0 4181899566494    nicstat          <- print_neat
150  0 4181899566791    nicstat          -> print_neat
151  0 4181899566953    nicstat          <- print_neat
152  0 4181899566961    nicstat          -> print_neat
153  0 4181899567085    nicstat          <- print_neat
154  0 4181899567091    nicstat          -> print_neat
155  0 4181899567247    nicstat          <- print_neat
156  0 4181899567254    nicstat          -> print_neat
157  0 4181899567377    nicstat          <- print_neat
158  0 4181899567383    nicstat          -> print_neat
159  0 4181899567538    nicstat          <- print_neat
160  0 4181899567544    nicstat          -> print_neat
161  0 4181899567666    nicstat          <- print_neat
162  0 4181899567977    nicstat          -> print_neat
163  0 4181899568232    nicstat          <- print_neat
164  0 4181899568240    nicstat          -> print_neat
165  0 4181899568397    nicstat          <- print_neat
166  0 4181899568404    nicstat          -> print_neat
167  0 4181899568528    nicstat          <- print_neat
168  0 4181899568535    nicstat          -> print_neat
169  0 4181899568656    nicstat          <- print_neat
170  0 4181899568663    nicstat          -> print_neat
171  0 4181899568819    nicstat          <- print_neat
172  0 4181899568826    nicstat          -> print_neat
173  0 4181899568947    nicstat          <- print_neat
174  0 4181899572708    Config.pm        -> DESTROY
175  0 4181899572735    Config.pm        <- DESTROY
176
177After initialising Perl libraries and modules, the "nicstat" program ran,
178the output matching what was expected from the source.
179
180