(self, job, successors)
Post job handling: print debugging information regarding the current job.

        :param CFGJob job:      The current CFGJob instance.
        :param list successors: All successors of the analysis job.
        :return: None
Post job handling: print debugging information regarding the current job.
Post job handling : print debugging information regarding the current job .
def _post_handle_job_debug(self, job, successors):
        """
        Post job handling: print debugging information regarding the current job.

        :param CFGJob job:      The current CFGJob instance.
        :param list successors: All successors of the analysis job.
        :return: None
        """

        sim_successors = job.sim_successors
        call_stack_suffix = job.call_stack_suffix
        extra_info = job.extra_info
        successor_status = job.successor_status

        func = self.project.loader.find_symbol(job.func_addr)
        obj = self.project.loader.find_object_containing(job.addr)
        function_name = func.name if func is not None else None
        module_name = obj.provides if obj is not None else None

        node = self.model.get_node(job.block_id)
        depth_str = "(D:%s)" % node.depth if node.depth is not None else ""

        l.debug("%s [%#x%s | %s]", sim_successors.description, sim_successors.addr, depth_str,
                "->".join([hex(i) for i in call_stack_suffix if i is not None])
                )
        l.debug("(Function %s of binary %s)", function_name, module_name)
        l.debug("|    Call jump: %s", extra_info['is_call_jump'] if extra_info is not None else 'unknown')

        for suc in successors:
            jumpkind = suc.history.jumpkind
            if jumpkind == "Ijk_FakeRet":
                exit_type_str = "Simulated Ret"
            else:
                exit_type_str = "-"
            try:
                l.debug("|    target: %#x %s [%s] %s", suc.solver.eval_one(suc.ip), successor_status[suc],
                        exit_type_str, jumpkind)
            except (SimValueError, SimSolverModeError):
                l.debug("|    target cannot be concretized. %s [%s] %s", successor_status[suc], exit_type_str,
                        jumpkind)
        l.debug("%d exits remaining, %d exits pending.", len(self._job_info_queue), len(self._pending_jobs))
        l.debug("%d unique basic blocks are analyzed so far.", len(self._analyzed_addrs))
def _post_handle_job_debug ( self , job , successors ) : sim_successors = job . sim_successors call_stack_suffix = job . call_stack_suffix extra_info = job . extra_info successor_status = job . successor_status func = self . project . loader . find_symbol ( job . func_addr ) obj = self . project . loader . find_object_containing ( job . addr ) function_name = func . name if func is not None else None module_name = obj . provides if obj is not None else None node = self . model . get_node ( job . block_id ) depth_str = "(D:%s)" % node . depth if node . depth is not None else "" l . debug ( "%s [%#x%s | %s]" , sim_successors . description , sim_successors . addr , depth_str , "->" . join ( [ hex ( i ) for i in call_stack_suffix if i is not None ] ) ) l . debug ( "(Function %s of binary %s)" , function_name , module_name ) l . debug ( "|    Call jump: %s" , extra_info [ 'is_call_jump' ] if extra_info is not None else 'unknown' ) for suc in successors : jumpkind = suc . history . jumpkind if jumpkind == "Ijk_FakeRet" : exit_type_str = "Simulated Ret" else : exit_type_str = "-" try : l . debug ( "|    target: %#x %s [%s] %s" , suc . solver . eval_one ( suc . ip ) , successor_status [ suc ] , exit_type_str , jumpkind ) except ( SimValueError , SimSolverModeError ) : l . debug ( "|    target cannot be concretized. %s [%s] %s" , successor_status [ suc ] , exit_type_str , jumpkind ) l . debug ( "%d exits remaining, %d exits pending." , len ( self . _job_info_queue ) , len ( self . _pending_jobs ) ) l . debug ( "%d unique basic blocks are analyzed so far." , len ( self . _analyzed_addrs ) )