def attach(self, pid): self.running = True self.pid = pid self.task = debug.task_for_pid(self.pid) self.is64 = debug.is_64_bit(self.pid) debug.ptrace_attach(pid) status = os.waitpid(self.pid, 0)[1] self.running = False
def start(self, args): assert self.pid is None, "already tracing a program." self.running = True self.pid = os.fork() if self.pid: status = os.waitpid(self.pid, 0)[1] self.task = debug.task_for_pid(self.pid) self.is64 = debug.is_64_bit(self.pid) self.running = False else: debug.ptrace_trace_me() os.execv(args[0], args)