#7539: use _saferepr() for printing exceptions from pdb.
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 0751c17..79a36a6 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -237,7 +237,7 @@
             if type(t) == type(''):
                 exc_type_name = t
             else: exc_type_name = t.__name__
-            print >>self.stdout, '***', exc_type_name + ':', v
+            print >>self.stdout, '***', exc_type_name + ':', _saferepr(v)
 
     def precmd(self, line):
         """Handle alias expansion and ';;' separator."""
@@ -753,7 +753,7 @@
             if isinstance(t, str):
                 exc_type_name = t
             else: exc_type_name = t.__name__
-            print >>self.stdout, '***', exc_type_name + ':', repr(v)
+            print >>self.stdout, '***', exc_type_name + ':', _saferepr(v)
             raise
 
     def do_p(self, arg):
diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
index ce64d17..0ef525e 100644
--- a/Lib/test/test_pdb.py
+++ b/Lib/test/test_pdb.py
@@ -126,6 +126,33 @@
     """
 
 
+def test_pdb_unicode_exception():
+    r"""This tests exceptions that cannot be displayed due to Unicode issues.
+    http://bugs.python.org/issue7539
+
+    >>> def test_function():
+    ...     import pdb; pdb.Pdb().set_trace()
+    ...     pass
+
+    >>> def raising_function():
+    ...     raise ValueError(u"\xff")
+
+    >>> with PdbTestInput([
+    ...     'raising_function()',
+    ...     'p raising_function()',
+    ...     'continue',
+    ... ]):
+    ...     test_function()
+    > <doctest test.test_pdb.test_pdb_unicode_exception[0]>(3)test_function()
+    -> pass
+    (Pdb) raising_function()
+    *** ValueError: ValueError(u'\xff',)
+    (Pdb) p raising_function()
+    *** ValueError: ValueError(u'\xff',)
+    (Pdb) continue
+    """
+
+
 def test_main():
     from test import test_pdb
     test_support.run_doctest(test_pdb, verbosity=True)