def test_pred(self): addr = 0xc32628 addr = 0xc32060 _record = api.get_record_at_address(self.memory_handler, addr) self.assertEqual(_record.address, addr) #self.assertEqual(len(_record.get_fields()), 3) print _record.to_string() pred = api.get_record_predecessors(self.memory_handler, _record) print 'pred', pred for p in pred: print p.to_string() pass
def test_pred(self): addr = 0xc32628 addr = 0xc32060 _record = api.get_record_at_address(self.memory_handler, addr) self.assertEqual(_record.address, addr) #self.assertEqual(len(_record.get_fields()), 3) print _record.to_string() pred = api.get_record_predecessors(self.memory_handler, _record) print 'pred', pred for p in pred: print p.to_string() pass
def test_pred(self): addr = 0xc32628 addr = 0xc32060 process_context = self.memory_handler.get_reverse_context() heap_context = process_context.get_context_for_address(addr) # ordered allocation allocs = heap_context.list_allocations_addresses() self.assertEqual(allocs[0], 0xc30688) _record = api.get_record_at_address(self.memory_handler, addr) self.assertEqual(_record.address, addr) #self.assertEqual(len(_record.get_fields()), 3) print(_record.to_string()) # FIXME - process must be reversed. Graph must be generated. pred = api.get_record_predecessors(self.memory_handler, _record) print('pred', pred) for p in pred: print(p.to_string()) pass
def test_pred(self): addr = 0xc32628 addr = 0xc32060 process_context = self.memory_handler.get_reverse_context() heap_context = process_context.get_context_for_address(addr) # ordered allocation allocs = heap_context.list_allocations_addresses() self.assertEqual(allocs[0], 0xc30688) _record = api.get_record_at_address(self.memory_handler, addr) self.assertEqual(_record.address, addr) #self.assertEqual(len(_record.get_fields()), 3) print _record.to_string() # FIXME - process must be reversed. Graph must be generated. pred = api.get_record_predecessors(self.memory_handler, _record) print 'pred', pred for p in pred: print p.to_string() pass
def show_predecessors_cmdline(args): """ Show the predecessors that point to a record at a particular address. :param opt: :return: """ memory_handler = cli.get_memory_handler(args) process_context = memory_handler.get_reverse_context() ctx = process_context.get_context_for_address(args.address) try: child_record = ctx.get_record_at_address(args.address) except ValueError as e: print None return records = api.get_record_predecessors(memory_handler, child_record) if len(records) == 0: print None else: for p_record in records: print '#0x%x\n%s\n' % (p_record.address, p_record.to_string()) return