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