docs: def _post_job_handling_debug(self, job, successors):
          """
          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
          """
  
          func = self.project.loader.find_symbol(job.addr)
          function_name = func.name if func is not None else None
          module_name = self.project.loader.find_object_containing(job.addr).provides
  
          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.solver.eval_one(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)