'Print out debugging information after handling a VFGJob and generating the succeeding jobs.
:param VFGJob job: The VFGJob instance.
:param list successors: A list of succeeding states.
:return: None'

def _post_job_handling_debug(self, job, successors):

    func = self.project.loader.find_symbol(job.addr)
    obj = self.project.loader.find_module_containing(job.addr)
    function_name = (func.name if (func is not None) else None)
    module_name = (obj.provides if (obj is not None) else obj)
    l.debug('VFGJob    @    %#08x    with    callstack    [    %s    ]', job.addr, job.callstack_repr(self.kb))
    l.debug('(Function    %s    of    %s)', function_name, module_name)
    l.debug('-        is    call    jump:    %s', job.is_call_jump)
    for suc in successors:
        if (suc not in job.dbg_exit_status):
            l.warning('-    %s    is    not    found.    FIND    OUT    WHY.', suc)
            continue
        try:
            l.debug('-        successor:    %#08x    of    %s    [%s]', suc.se.exactly_int(suc.ip), suc.history.jumpkind, job.dbg_exit_status[suc])
        except SimValueError:
            l.debug('-        target    cannot    be    concretized.    %s    [%s]', job.dbg_exit_status[suc], suc.history.jumpkind)
    l.debug('Remaining/pending    jobs:    %d/%d', len(self._job_info_queue), len(self._pending_returns))
    l.debug('Remaining    jobs:    %s', [('%s    %d' % (ent.job, id(ent.job))) for ent in self._job_info_queue])
    l.debug('Task    stack:    %s', self._task_stack)
