bin/stackprof in stackprof-0.2.2 vs bin/stackprof in stackprof-0.2.3
- old
+ new
@@ -11,36 +11,47 @@
parser = OptionParser.new(ARGV) do |o|
o.banner = "Usage: stackprof [file.dump]+ [--text|--method=NAME|--callgrind|--graphviz]"
o.on('--text', 'Text summary per method (default)'){ options[:format] = :text }
o.on('--files', 'List of files'){ |f| options[:format] = :files }
- o.on('--limit=[num]', Integer, 'Limit --text or --files output to N lines'){ |n| options[:limit] = n }
+ o.on('--limit [num]', Integer, 'Limit --text or --files output to N lines'){ |n| options[:limit] = n }
o.on('--sort-total', "Sort --text or --files output on total samples\n\n"){ options[:sort] = true }
- o.on('--method=[grep]', 'Zoom into specified method'){ |f| options[:format] = :method; options[:filter] = f }
- o.on('--file=[grep]', 'Show annotated code for specified file'){ |f| options[:format] = :file; options[:filter] = f }
+ o.on('--method [grep]', 'Zoom into specified method'){ |f| options[:format] = :method; options[:filter] = f }
+ o.on('--file [grep]', 'Show annotated code for specified file'){ |f| options[:format] = :file; options[:filter] = f }
+ o.on('--stackcollapse', 'stackcollapse.pl compatible output (use with flamegraph.pl)'){ options[:format] = :stackcollapse }
o.on('--callgrind', 'Callgrind output (use with kcachegrind, gprof2dot)'){ options[:format] = :callgrind }
o.on('--graphviz', "Graphviz output (use with dot)\n\n"){ options[:format] = :graphviz }
+ o.on('--dump', 'Print marshaled profile dump (combine multiple profiles)'){ options[:format] = :dump }
o.on('--debug', 'Pretty print raw profile data'){ options[:format] = :debug }
end
parser.parse!
parser.abort(parser.help) if ARGV.empty?
reports = []
while ARGV.size > 0
- reports << StackProf::Report.new(Marshal.load(IO.binread(ARGV.pop)))
+ begin
+ file = ARGV.pop
+ reports << StackProf::Report.new(Marshal.load(IO.binread(file)))
+ rescue TypeError => e
+ STDERR.puts "** error parsing #{file}: #{e.inspect}"
+ end
end
report = reports.inject(:+)
case options[:format]
when :text
report.print_text(options[:sort], options[:limit])
when :debug
report.print_debug
+when :dump
+ report.print_dump
when :callgrind
report.print_callgrind
when :graphviz
report.print_graphviz
+when :stackcollapse
+ report.print_stackcollapse
when :method
report.print_method(options[:filter])
when :file
report.print_file(options[:filter])
when :files