import gdb import time import re import sys import common_functions as cf from classes.BitFlip import BitFlip def exit_handler(event): global nosalir nosalir=False print(str("event type: exit")) try: print("exit code: {}".format(str(event.exit_code))) except Exception as err: err_str = "ERROR: {}".format(str(err)) print(err_str) """ Handler that will put a breakpoint on the kernel after signal """ def set_event(event): global trun,ocurrencias,t,primera print ("Es mi primera vez"+ str(primera)+" "+str(ocurrencias)) if (isinstance(event, gdb.BreakpointEvent)): if (primera): t=time.time() print ("Tomo tiempo " + str (t)) ocurrencias=ocurrencias+1 else: print ("Para tiempo " + str (time.time())) trun=(time.time()-t) primera=not primera # else: # trun=(time.clock()-t) """ Main function """ def main(): global ocurrencias,t,nosalir,trun,primera primera=True ; ocurrencias=0; # Initialize GDB to run the app gdb.execute("set confirm off") gdb.execute("set pagination off") gdb.execute("set target-async off") gdb.execute("set non-stop off") # Connecting to a exit handler event gdb.events.exited.connect(exit_handler) # Connecting to a stop signal event gdb.events.stop.connect(set_event) # gdb_init_strings = str(os.environ["CAROL_FI_INFO"]) gdb_init_strings = arg0 cadena=gdb_init_strings.split(";",3) print >>sys.stderr, (cadena[0]) #,"-",cadena[0],"-",cadena[1],"-", cadena[2],"#". cadena[3]) section =cadena[0]=="True" onlycount=cadena[1]=="True" #print ("B "+section+"ke "+kernel_end+" ....") #print (cadena[2].split(";")) for init_str in cadena[3].split(";"): gdb.execute(init_str) maxi=0. gdb.execute("r") if (onlycount): ks=cadena[2].split(",") print (ks) listreg=set () for x in ks: listreg.update(BitFlip.numreg(x) ) print(listreg) maxi=len(listreg) print("Maximo..."+str (maxi)+" o "+str(max([int(x) for x in listreg] ) )) else: if (section): gdb.execute("c") else: gdb.execute("finish") f=open("tmpxxx_return_profiler.conf","w") f.write("[DEFAULT] \nOcurrencias = "+str(ocurrencias)+"\nTiempo = "+str(trun)+"\n") f.close() sys.exit(maxi) main()