示例#1
0
    def __init__(self, tpl_filename, trace_filename):
        self.si = StaticInfo.StaticInfo(tpl_filename)
        self.reader = TraceReader.TraceReaderFile(trace_filename)

        #evaluator => from raw events and Static info. Get events
        self.evaluator = TraceEvaluate.TraceEvaluate(self.si)

        #export    => font end (txt, gui)
        self.export = TraceExport.TraceExport()
        self.evaluator.setExport(self.export)
示例#2
0
 def _recvStackTrace(self, bpInfo, tid):
     ctxt = self.sess.ctxt
     l = []
     tcObj  = ctxt.objpool(ThreadContext,tid,self.sess)
     framList = tcObj.frams()
     bGetvaule = True
     for  fram in framList:
         fId = fram[0]
         loc = fram[1]
         args = []
         clsObj = ctxt.objpool(ClassType,loc.rtId,self.sess)
         clsName = clsObj.name
         funcName = clsObj.getMethodName(loc.mId)
         methObj = ctxt.objpool(MethodContext,loc.rtId,loc.mId,self.sess)
         parfunc = funcName[0]+TraceReader.jniparse(funcName[1])
         funcFullName = '@'.join([clsName,parfunc])
         if cmp(funcFullName,"com/android/internal/os/ZygoteInit$MethodAndArgsCaller@run()") == 0:
             bGetvaule = False
         if bGetvaule:
             framObj = ctxt.objpool(FrameInfo,fId,loc,tid,self.sess)
             args = framObj.GetValues()
         l.append((funcFullName,loc.idx,args))
     tcObj.resume()
     self.stackTraceWindow.addTraceResult(l)
示例#3
0
    def _traceCntHandle(self, reader):
        sort = 1
        for m in reader.callInfo:
            if m["method_action"]:
                try:
                    method_info = reader.funcData[m["method_id"]]
                except:
                    print m["method_id"]
                    continue
                funcName = method_info["method_name"]
                className = method_info["class_name"]
                jniName = method_info["jni"]
                parfunc = funcName+TraceReader.jniparse(jniName)
                fullFuncName = '@'.join([className,parfunc])

                if fullFuncName in self._traceFuncCntDict.keys():
                    data = self._traceFuncCntDict[fullFuncName]
                    callCnt = data[0]
                    callCnt += 1
                    self._traceFuncCntDict[fullFuncName] = (callCnt,data[1],data[2])
                else:
                    self._traceFuncCntDict[fullFuncName] = (1, sort,m["method_id"])
                    sort += 1
        self._funcTraceCntFilteShow()
        import TraceReader
        import TraceEvaluate
        import TraceExport
    except ImportError:
        print("I can't find trace tools scripts")
        print("=> searched in '" + traceToolFolder + "'")
        print(
            "Maybe the TRAMPOLINE_BASE_PATH is not correctly set in your .oil file"
        )
        print("Correct it and run goil again.")
        sys.exit(1)

    #reader    => getting raw events
    if args.serial:  #serial line?
        serialParams = args.serial.split(',')
        reader = TraceReader.TraceReaderSerial(serialParams, args.verbose)
    else:  #then file.
        if not args.input:
            args.input = defaultTraceFile
        reader = TraceReader.TraceReaderFile(args.input)

    #output
    outputToFile = False
    if args.output:
        outputToFile = True
        rawEventList = []
    else:
        #export    => front end (txt, gui)
        export = TraceExport.TraceExportTxt()
        #read static information
        si = StaticInfo.StaticInfo('conf/tpl_static_info.json')