Пример #1
0
 def _open_trace(self):
     self._babeltrace_version = trace_utils.read_babeltrace_version()
     if self._babeltrace_version >= self._BT_INTERSECT_VERSION:
         traces = TraceCollection(intersect_mode=self._args.intersect_mode)
     else:
         if self._args.intersect_mode:
             self._print('Warning: intersect mode not available - '
                         'disabling')
             self._print('         Use babeltrace {} or later to '
                         'enable'.format(trace_utils.BT_INTERSECT_VERSION))
             self._args.intersect_mode = False
         traces = TraceCollection()
     handles = traces.add_traces_recursive(self._args.path, 'ctf')
     if handles == {}:
         self._gen_error('Failed to open ' + self._args.path, -1)
     self._handles = handles
     self._traces = traces
     self._ts_begin = traces.timestamp_begin
     self._ts_end = traces.timestamp_end
     self._process_date_args()
     self._read_tracer_version()
     if not self._args.skip_validation:
         self._check_lost_events()
     if not self._check_period_args():
         self._gen_error('Invalid period parameters')
Пример #2
0
 def _open_trace(self):
     self._babeltrace_version = trace_utils.read_babeltrace_version()
     if self._babeltrace_version >= self._BT_INTERSECT_VERSION:
         traces = TraceCollection(intersect_mode=self._args.intersect_mode)
     else:
         if self._args.intersect_mode:
             self._print('Warning: intersect mode not available - '
                         'disabling')
             self._print('         Use babeltrace {} or later to '
                         'enable'.format(
                             trace_utils.BT_INTERSECT_VERSION))
             self._args.intersect_mode = False
         traces = TraceCollection()
     handles = traces.add_traces_recursive(self._args.path, 'ctf')
     if handles == {}:
         self._gen_error('Failed to open ' + self._args.path, -1)
     self._handles = handles
     self._traces = traces
     self._ts_begin = traces.timestamp_begin
     self._ts_end = traces.timestamp_end
     self._process_date_args()
     self._read_tracer_version()
     if not self._args.skip_validation:
         self._check_lost_events()
     if not self._check_period_args():
         self._gen_error('Invalid period parameters')
Пример #3
0
 def _open_trace(self):
     traces = TraceCollection()
     handle = traces.add_traces_recursive(self._arg_path, "ctf")
     if handle == {}:
         self._gen_error("Failed to open " + self._arg_path, -1)
     self._handle = handle
     self._traces = traces
     common.process_date_args(self)
Пример #4
0
 def __init__(self, path):
     self.traces = dict()
     self.tc = TraceCollection()
     if self.tc:
         # add traces to the collection
         if self.tc.add_traces_recursive(path, "ctf") is None:
             raise RuntimeError('Cannot add trace')
     else:
         print("no TraceCollection available...")
Пример #5
0
    def _open_trace(self, path):
        traces = TraceCollection()
        handles = traces.add_traces_recursive(path, 'ctf')
        if not handles:
            print('Failed to open ' + path, file=sys.stderr)
            sys.exit(-1)

        self._handles = handles
        self._traces = traces
Пример #6
0
    def _open_trace(self, path):
        traces = TraceCollection()
        handles = traces.add_traces_recursive(path, 'ctf')
        if not handles:
            print('Failed to open ' + path, file=sys.stderr)
            sys.exit(-1)

        self._handles = handles
        self._traces = traces
Пример #7
0
def load_traces(base):
    traces = TraceCollection()
    for root, dirs, files in os.walk(base):
        for f in files:
            if f == "metadata":
                ret = traces.add_trace(root, "ctf")
                if ret is None:
                    raise IOError("Error adding trace %s" % root)

    return traces
Пример #8
0
 def _open_trace(self):
     traces = TraceCollection()
     handles = traces.add_traces_recursive(self._args.path, 'ctf')
     if handles == {}:
         self._gen_error('Failed to open ' + self._args.path, -1)
     self._handles = handles
     self._traces = traces
     self._process_date_args()
     if not self._args.skip_validation:
         self._check_lost_events()
Пример #9
0
 def _open_trace(self):
     traces = TraceCollection()
     handle = traces.add_traces_recursive(self._arg_path, "ctf")
     if handle == {}:
         self._gen_error("Failed to open " + self._arg_path, -1)
     self._handle = handle
     self._traces = traces
     common.process_date_args(self)
     if not self._arg_skip_validation:
         self._check_lost_events()
Пример #10
0
 def _open_trace(self):
     traces = TraceCollection()
     handles = traces.add_traces_recursive(self._arg_path, 'ctf')
     if handles == {}:
         self._gen_error('Failed to open ' + self._arg_path, -1)
     self._handles = handles
     self._traces = traces
     self._process_date_args()
     if not self._arg_skip_validation:
         self._check_lost_events()
Пример #11
0
class CTFBabeltrace():
    def __init__(self, path):
        self.traces = dict()
        self.tc = TraceCollection()
        if self.tc:
            # add traces to the collection
            if self.tc.add_traces_recursive(path, "ctf") is None:
                raise RuntimeError('Cannot add trace')
        else:
            print("no TraceCollection available...")

    def get_events(self):
        if self.tc:
            for event in self.tc.events:
                yield event
if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Trace parser')
    parser.add_argument('path', metavar="<path/to/trace>", help='Trace path')
    parser.add_argument('-t', '--test', type=int, help='Test to validate')
    parser.add_argument('-p', '--pid', type=int, help='PID of the app')
    args = parser.parse_args()

    if not args.test:
        print("Need to pass a test to validate (-t)")
        sys.exit(1)

    if not args.pid:
        print("Need to pass the PID to check (-p)")
        sys.exit(1)

    traces = TraceCollection()
    handle = traces.add_traces_recursive(args.path, "ctf")
    if handle is None:
        sys.exit(1)

    t = None

    if args.test == 1:
        t = Test1(traces, args.pid)
    elif args.test == 2:
        t = Test2(traces, args.pid)
    elif args.test == 3:
        t = Test3(traces, args.pid)
    elif args.test == 4:
        t = Test4(traces, args.pid)
    elif args.test == 5:
Пример #13
0
    def reset_total(self, start_ts):
        for tid in self.state.tids.keys():
            self.state.tids[tid].allocated_pages = 0
            self.state.tids[tid].freed_pages = 0
        self.state.mm["allocated_pages"] = 0
        self.state.mm["freed_pages"] = 0

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Memory usage analysis')
    parser.add_argument('path', metavar="<path/to/trace>", help='Trace path')
    parser.add_argument('-r', '--refresh', type=int,
                        help='Refresh period in seconds', default=0)
    parser.add_argument('--top', type=int, default=10,
                        help='Limit to top X TIDs (default = 10)')
    parser.add_argument('--no-progress', action="store_true",
                        help='Don\'t display the progress bar')
    args = parser.parse_args()

    traces = TraceCollection()
    handle = traces.add_traces_recursive(args.path, "ctf")
    if handle is None:
        sys.exit(1)

    c = MemTop(traces)

    c.run(args)

    for h in handle.values():
        traces.remove_trace(h)
Пример #14
0
    if 'all' in types:
        output_enabled = {x: True for x in possibleTypes}
    else:
        output_enabled = {x: False for x in possibleTypes}
        for event_type in types:
            if event_type in possibleTypes:
                output_enabled[event_type] = True
            else:
                print('Invalid type:', event_type)
                parser.print_help()
                sys.exit(1)

    if args.syscall and not args.syscall.startswith('sys_'):
        args.syscall = 'sys_' + args.syscall

    traces = TraceCollection()
    handle = traces.add_trace(args.path, 'ctf')
    if handle is None:
        sys.exit(1)

    if args.errname:
        err_number = parse_errname(args.errname)
    else:
        err_number = None

    # Convert start/endtime from seconds to nanoseconds
    if args.start:
        args.start = args.start * NS_IN_S
    if args.end:
        args.end = args.end * NS_IN_S
Пример #15
0
    if 'all' in types:
        output_enabled = {x: True for x in possibleTypes}
    else:
        output_enabled = {x: False for x in possibleTypes}
        for event_type in types:
            if event_type in possibleTypes:
                output_enabled[event_type] = True
            else:
                print('Invalid type:', event_type)
                parser.print_help()
                sys.exit(1)

    if args.syscall and not args.syscall.startswith('sys_'):
        args.syscall = 'sys_' + args.syscall

    traces = TraceCollection()
    handle = traces.add_trace(args.path, 'ctf')
    if handle is None:
        sys.exit(1)

    if args.errname:
        err_number = parse_errname(args.errname)
    else:
        err_number = None

    # Convert start/endtime from seconds to nanoseconds
    if args.start:
        args.start = args.start * NS_IN_S
    if args.end:
        args.end = args.end * NS_IN_S