diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index fb6c510..ebb3bfd 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -3,6 +3,7 @@
 # $Id$
 
 import gc
+import logging
 import re
 import sys
 import textwrap
@@ -17,6 +18,7 @@
 from portage.sets import SETPREFIX
 from portage.sets.base import InternalPackageSet
 from portage.util import cmp_sort_key, writemsg, writemsg_stdout
+from portage.util import writemsg_level
 
 from _emerge.AtomArg import AtomArg
 from _emerge.Blocker import Blocker
@@ -24,7 +26,6 @@
 from _emerge.BlockerDepPriority import BlockerDepPriority
 from _emerge.changelog import calc_changelog
 from _emerge.countdown import countdown
-from _emerge.create_depgraph_params import create_depgraph_params
 from _emerge.create_world_atom import create_world_atom
 from _emerge.Dependency import Dependency
 from _emerge.DependencyArg import DependencyArg
@@ -714,6 +715,18 @@
 							dep.parent, {})["missing dependency"] = \
 								set([(dep.parent, dep.root, dep.atom)])
 						self._dynamic_config._need_restart = True
+						if "--debug" in self._frozen_config.myopts:
+							msg = []
+							msg.append("")
+							msg.append("")
+							msg.append("backtracking due to unsatisfied dep:")
+							msg.append("    parent: %s" % dep.parent)
+							msg.append("  priority: %s" % dep.priority)
+							msg.append("      root: %s" % dep.root)
+							msg.append("      atom: %s" % dep.atom)
+							msg.append("")
+							writemsg_level("".join("%s\n" % l for l in msg),
+								noiselevel=-1, level=logging.DEBUG)
 
 			return 0
 		# In some cases, dep_check will return deps that shouldn't
@@ -868,6 +881,19 @@
 						self._dynamic_config._runtime_pkg_mask.setdefault(
 							existing_node, {})["slot conflict"] = parent_atoms
 						self._dynamic_config._need_restart = True
+						if "--debug" in self._frozen_config.myopts:
+							msg = []
+							msg.append("")
+							msg.append("")
+							msg.append("backtracking due to slot conflict:")
+							msg.append("   package: %s" % existing_node)
+							msg.append("      slot: %s" % existing_node.slot_atom)
+							msg.append("   parents: %s" % \
+								[(str(parent), atom) \
+								for parent, atom in parent_atoms])
+							msg.append("")
+							writemsg_level("".join("%s\n" % l for l in msg),
+								noiselevel=-1, level=logging.DEBUG)
 						return 0
 
 					# A slot collision has occurred.  Sometimes this coincides
@@ -3866,8 +3892,6 @@
 				depth >= mylist[i+1][1]:
 					del mylist[i]
 
-		from portage import flatten
-		from portage.dep import use_reduce, paren_reduce
 		# files to fetch list - avoids counting a same file twice
 		# in size display (verbose mode)
 		myfetchlist=[]
@@ -4966,6 +4990,10 @@
 				runtime_pkg_mask = mydepgraph.get_runtime_pkg_mask()
 				backtracked += 1
 			elif backtracked and allow_backtracking:
+				if "--debug" in myopts:
+					writemsg_level(
+						"\n\nbacktracking aborted after %s tries\n\n" % \
+						backtracked, noiselevel=-1, level=logging.DEBUG)
 				# Backtracking failed, so disable it and do
 				# a plain dep calculation + error message.
 				allow_backtracking = False
