X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=utilities%2Fovs-parse-backtrace.in;h=350cbd9f8774f86607f53993a757995f0a67d47d;hb=HEAD;hp=4f793beeb19c2803b45ad4c31b1b451d31ed1004;hpb=013061cfa364fe4c2f3f1f17fe90ab4b226f37df;p=sliver-openvswitch.git diff --git a/utilities/ovs-parse-backtrace.in b/utilities/ovs-parse-backtrace.in index 4f793beeb..350cbd9f8 100755 --- a/utilities/ovs-parse-backtrace.in +++ b/utilities/ovs-parse-backtrace.in @@ -73,23 +73,19 @@ result. Expected usage is for ovs-appctl backtrace to be piped in.""") print "Binary: %s\n" % binary stdin = sys.stdin.read() - trace_list = stdin.strip().split("\n\n") - try: - #Remove the first line from each trace. - trace_list = [trace[(trace.index("\n") + 1):] for trace in trace_list] - except ValueError: - sys.stdout.write(stdin) - sys.exit(1) - - trace_map = {} - for trace in trace_list: - trace_map[trace] = trace_map.get(trace, 0) + 1 - - sorted_traces = sorted(trace_map.items(), key=(lambda x: x[1]), - reverse=True) - for trace, count in sorted_traces: + traces = [] + for trace in stdin.strip().split("\n\n"): lines = trace.splitlines() + match = re.search(r'Count (\d+)', lines[0]) + if match: + count = int(match.group(1)) + else: + count = 0 + traces.append((lines[1:], count)) + traces = sorted(traces, key=(lambda x: x[1]), reverse=True) + + for lines, count in traces: longest = max(len(l) for l in lines) print "Backtrace Count: %d" % count