diff --git a/libs/utils/trace.py b/libs/utils/trace.py index e6c059374d479c64a18d5c62c15964a3e0406f00..52f46df9ddf38ab59306fccd13b477d709f9fa00 100644 --- a/libs/utils/trace.py +++ b/libs/utils/trace.py @@ -26,6 +26,7 @@ import json import warnings import operator import logging +import webbrowser from analysis_register import AnalysisRegister from collections import namedtuple @@ -394,6 +395,23 @@ class Trace(object): """ return self._tasks_by_pid.TaskName.to_dict() + def show(self): + """ + Open the parsed trace using the most appropriate native viewer. + + The native viewer depends on the specified trace format: + - ftrace: open using kernelshark + - systrace: open using a browser + + In both cases the native viewer is assumed to be available in the host + machine. + """ + if isinstance(self.ftrace, trappy.FTrace): + return os.popen("kernelshark {}".format(self.ftrace.trace_path)) + if isinstance(self.ftrace, trappy.SysTrace): + return webbrowser.open(self.ftrace.trace_path) + self._log.warning('No trace data available') + ############################################################################### # DataFrame Getter Methods