def begin_trace(args=None, pid=None): # Load the functions defined in the autogenerated # ltraceosx/data/funcs.json and overridden by special.json in the same # directory. data_dir = os.path.join(os.path.dirname(__file__), 'data') funcs_filename = os.path.join(data_dir, 'funcs.json') special_filename = os.path.join(data_dir, 'special.json') funcs = json.loads(open(funcs_filename).read()) funcs.update(json.loads(open(special_filename).read())) # Attach to, or launch, program tracer = Tracer() if pid is not None: path = debug.path_for_pid(pid) if not os.path.exists(path): raise IOError("could not find file %r for pid %r." % (path, pid)) tracer.attach(pid) attached = True else: path = args[0] if not os.path.exists(path): raise IOError("could not find file %r." % (path,)) tracer.start(args) # Get information about the stubs section stubs = load_stubs(path, 0x1000007 if tracer.is64 else 0x7) stubs_content = stubs['stubs_content'] # Find stubs in memory stubs_address = tracer.search_memory(stubs_content[:24]) if stubs_address is None: raise LtraceException("couldn't find stubs in memory.") # Add breakpoints to every entry in the stubs section. calling_convention = SystemV64ABI if tracer.is64 else Cdecl for i in range(0, len(stubs_content), 6): name = stubs['stubs_names'][i / 6] if name not in funcs: print 'Warning: no prototype for function: %r' % name data = funcs.get(name, {}) breakpoint = LibraryCallBreakpoint(name, data, calling_convention) tracer.add_breakpoint(stubs_address + i, breakpoint) del funcs # Go! tracer.run() return 0
def accept(self, event=None): self.accepted = True self.close() @staticmethod def get_band_n_rate(oldband, oldrate, parent=None): popup = TkTracerWindow.BandAndRateWindow(oldband, oldrate, parent) popup.window.grab_set() popup.window.wait_window(popup.window) if popup.accepted: try: if len(popup.band_value) != 0: int(popup.band_value) float(popup.rate_value) except ValueError: messagebox.showerror('Error', 'Bad entry !') return popup.accepted, popup.band_value, popup.rate_value if __name__ == '__main__': main_tracer = Tracer() main_tracer.run(show=False) app = tk.Tk() main_window = TkTracerWindow(app, main_tracer) app.mainloop()
grid.addWidget( buttons, 4, 1 ) self.setLayout( grid ) @staticmethod def get_band_n_rate( oldband, oldrate, parent = None ) : popup = QTracerWindow.BandAndRateWindow( oldband, oldrate, parent ) accepted = popup.exec_() newband, newrate = popup.band_entry.text(), popup.rate_entry.text() if accepted == QtGui.QDialog.Accepted : try : if len( newband ) != 0 : int( newband ) float( newrate ) except ValueError : QtGui.QMessageBox.critical( parent, 'Error', 'Bad entry !' ) return accepted == QtGui.QDialog.Accepted, newband, newrate if __name__ == '__main__' : main_tracer = Tracer() main_tracer.run( show=False ) app = QtGui.QApplication( sys.argv ) main_window = QTracerWindow( main_tracer ) sys.exit( app.exec_() )
try: db = DbServer(DB_URL) tracer = Tracer(user=PACER_USER, password=PACER_PASS, num_days=NUM_DAYS, db=db) slacker = Slacker(webhook=SLACK_WEBHOOK, db=db) if args.drop: db.delete_all_cases() db.drop_tables() elif args.test: tracer.parse_test() elif args.bot: slacker.get_latest_counts(days=10, prevent_timeout=True) elif args.all: tracer.run() slacker.get_latest_counts() elif args.people: [db.add_party(c) for c in INTITAL_PARTIES] else: tracer.run() slacker.get_latest_counts(days=2) except Exception as e: exc_type, exc_obj, tb = sys.exc_info() logging.error(e) PrintException(logging)