1 The following are examples of pl_flow.d.
3 This is a simple script to trace the flow of Perl subroutines (functions).
4 Here it traces the example program, Code/Perl/func_abc.pl.
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
16 As each subroutine is entered, the third column is indented by 2 spaces. This
17 shows which subroutine is calling who - the output abovebegins by showing that
18 func_a() began, and then called func_b().
20 If the output looks shuffled, check the CPU "C" and "TIME" columns, and
21 post sort based on TIME if necessary.
23 See Notes/ALLflow_notes.txt for important notes about reading flow outputs.
27 The following traces a Perl network interface statistics tool, "nicstat"
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
177 After initialising Perl libraries and modules, the "nicstat" program ran,
178 the output matching what was expected from the source.