diff --git a/test/pretty_printers/gdb_pretty_printer_test.py b/test/pretty_printers/gdb_pretty_printer_test.py
index ece13b7..af473c4 100644
--- a/test/pretty_printers/gdb_pretty_printer_test.py
+++ b/test/pretty_printers/gdb_pretty_printer_test.py
@@ -17,6 +17,7 @@
 from __future__ import print_function
 import re
 import gdb
+import sys
 
 test_failures = 0
 
@@ -57,9 +58,9 @@
                 print("FAIL: " + test_loc.symtab.filename +
                       ":" + str(test_loc.line))
                 print("GDB printed:")
-                print("   " + value)
+                print("   " + repr(value))
                 print("Value should match:")
-                print("   " + check_literal)
+                print("   " + repr(check_literal))
                 test_failures += 1
             else:
                 print("PASS: " + test_loc.symtab.filename +
@@ -76,11 +77,15 @@
     def _get_value_string(self, compare_frame, testcase_frame):
         compare_frame.select()
         if "ComparePrettyPrint" in compare_frame.name():
-            return gdb.execute("p value", to_string=True)
-        value_str = str(compare_frame.read_var("value"))
-        clean_expression_str = value_str.strip("'\"")
-        testcase_frame.select()
-        return gdb.execute("p " + clean_expression_str, to_string=True)
+            s = gdb.execute("p value", to_string=True)
+        else:
+            value_str = str(compare_frame.read_var("value"))
+            clean_expression_str = value_str.strip("'\"")
+            testcase_frame.select()
+            s = gdb.execute("p " + clean_expression_str, to_string=True)
+        if sys.version_info.major == 2:
+            return s.decode("utf-8")
+        return s
 
 
 def exit_handler(event=None):
diff --git a/utils/gdb/libcxx/printers.py b/utils/gdb/libcxx/printers.py
index ff45bde..b2d5894 100644
--- a/utils/gdb/libcxx/printers.py
+++ b/utils/gdb/libcxx/printers.py
@@ -137,13 +137,17 @@
         def __iter__(self):
             return self
 
-        def next(self):
+        def __next__(self):
             # child_iter raises StopIteration when appropriate.
             field_name = self.child_iter.next()
             child = self.val["__base_"][field_name]["__value_"]
             self.count += 1
             return ("[%d]" % self.count, child)
 
+        # TODO Delete when we drop Python 2.
+        def next(self):
+            return self.__next__()
+
     def __init__(self, val):
         self.val = val
 
@@ -311,7 +315,7 @@
         def __iter__(self):
             return self
 
-        def next(self):
+        def __next__(self):
             """Retrieve the next element."""
 
             self.count += 1
@@ -328,6 +332,10 @@
                 self.offset = 0
             return ("[%d]" % self.count, outbit)
 
+        # TODO Delete when we drop Python 2.
+        def next(self):
+            return self.__next__()
+
     class _VectorIterator(object):
         """Class to iterate over the non-bool vector's children."""
 
@@ -339,7 +347,7 @@
         def __iter__(self):
             return self
 
-        def next(self):
+        def __next__(self):
             self.count += 1
             if self.item == self.end:
                 raise StopIteration
@@ -347,6 +355,10 @@
             self.item += 1
             return ("[%d]" % self.count, entry)
 
+        # TODO Delete when we drop Python 2.
+        def next(self):
+            return self.__next__()
+
     def __init__(self, val):
         """Set val, length, capacity, and iterator for bool and normal vectors."""
         self.val = val
