diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py
index 5fbf154..2bd4457 100644
--- a/Lib/test/test_gdb.py
+++ b/Lib/test/test_gdb.py
@@ -11,9 +11,6 @@
 import unittest
 import locale
 
-# FIXME: issue #28023
-raise unittest.SkipTest("FIXME: issue #28023, compact dict (issue #27350) broke python-gdb.py")
-
 # Is this Python configured to support threads?
 try:
     import _thread
@@ -296,9 +293,8 @@
         'Verify the pretty-printing of dictionaries'
         self.assertGdbRepr({})
         self.assertGdbRepr({'foo': 'bar'}, "{'foo': 'bar'}")
-        # PYTHONHASHSEED is need to get the exact item order
-        if not sys.flags.ignore_environment:
-            self.assertGdbRepr({'foo': 'bar', 'douglas': 42}, "{'douglas': 42, 'foo': 'bar'}")
+        # Python preserves insertion order since 3.6
+        self.assertGdbRepr({'foo': 'bar', 'douglas': 42}, "{'foo': 'bar', 'douglas': 42}")
 
     def test_lists(self):
         'Verify the pretty-printing of lists'
@@ -819,6 +815,7 @@
                                           )
         self.assertIn('Garbage-collecting', gdb_output)
 
+    @unittest.skip("FIXME: builtin method is not shown in py-bt and py-bt-full")
     @unittest.skipIf(python_is_optimized(),
                      "Python was compiled with optimizations")
     # Some older versions of gdb will fail with
diff --git a/Misc/NEWS b/Misc/NEWS
index 928854b..b606101 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,6 +13,11 @@
 Library
 -------
 
+Tools/Demos
+-----------
+
+- Issue #28023: Fix python-gdb.py didn't support new dict implementation.
+
 
 What's New in Python 3.6.0 beta 4
 =================================
diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py
index 3e95b44..964cc9f 100755
--- a/Tools/gdb/libpython.py
+++ b/Tools/gdb/libpython.py
@@ -666,8 +666,9 @@
         '''
         keys = self.field('ma_keys')
         values = self.field('ma_values')
-        for i in safe_range(keys['dk_size']):
-            ep = keys['dk_entries'].address + i
+        entries, nentries = self._get_entries(keys)
+        for i in safe_range(nentries):
+            ep = entries[i]
             if long(values):
                 pyop_value = PyObjectPtr.from_pyobject_ptr(values[i])
             else:
@@ -707,6 +708,29 @@
             pyop_value.write_repr(out, visited)
         out.write('}')
 
+    def _get_entries(self, keys):
+        dk_size = int(keys['dk_size'])
+        try:
+            # <= Python 3.5
+            return keys['dk_entries'], dk_size
+        except gdb.error:
+            # >= Python 3.6
+            pass
+
+        if dk_size <= 0xFF:
+            offset = dk_size
+        elif dk_size <= 0xFFFF:
+            offset = 2 * dk_size
+        elif dk_size <= 0xFFFFFFFF:
+            offset = 4 * dk_size
+        else:
+            offset = 8 * dk_size
+
+        ent_ptr_t = gdb.lookup_type('PyDictKeyEntry').pointer()
+        ent_addr = int(keys['dk_indices']['as_1'].address) + offset
+        return gdb.Value(ent_addr).cast(ent_ptr_t), int(keys['dk_nentries'])
+
+
 class PyListObjectPtr(PyObjectPtr):
     _typename = 'PyListObject'
 
