diff --git a/gdb-port/commands.py b/gdb-port/commands.py
index 453ccbe3077f31987e82d9ef7d31b96d6c676ec9..ec1e5575539405d4d23360bed6d7b9fbee8cb767 100644
--- a/gdb-port/commands.py
+++ b/gdb-port/commands.py
@@ -141,3 +141,12 @@ class HammerParserCurrentEnv(gdb.Command):
 		print(type(p_env).__name__ + " - " + str(p_env)) # TODO: consistency with GUI
 
 HammerParserCurrentEnv()
+
+class HammerParserDumpMemoryStats(gdb.Command):
+	def __init__(self):
+		super(HammerParserDumpMemoryStats, self).__init__("hammer-parser-dump-memory-stats", gdb.COMMAND_OBSCURE)
+		print(":: hammer-parser-dump-memory-stats")
+
+	def invoke(self, arg, from_tty):
+		stats = top_level_parse.dump_memory_stats()
+		print(stats)
diff --git a/gdb-port/tests/unit/top-level-parse.py b/gdb-port/tests/unit/top-level-parse.py
index 0872e51319b25a19e3fcced41973aa02db4e6773..dd7b914c83379568e20384af6a30fff34b8a5758 100644
--- a/gdb-port/tests/unit/top-level-parse.py
+++ b/gdb-port/tests/unit/top-level-parse.py
@@ -163,3 +163,17 @@ class TopLevelParseStateManagement(unittest.TestCase):
 		self.parser1.add_mem_use(128, 50)
 		parser2.add_mem_use(16, 60)
 		self.assertEqual(self.top_level_parse.get_avg_mem_use_per_arena(), {16: 55, 128: 50})
+
+	def test_dump_memory_stats(self):
+		self.top_level_parse.parser_stacks.append(self.ps1)
+		self.top_level_parse.parser_objs[32] = self.parser1
+		self.ps1.push(self.parser1)
+		parser2 = Parser("bar", 48)
+		self.top_level_parse.parser_objs[48] = parser2
+		self.ps1.push(parser2)
+		self.parser1.add_mem_use(16, 50)
+		self.parser1.add_mem_use(128, 50)
+		parser2.add_mem_use(16, 60)
+
+		stats = self.top_level_parse.dump_memory_stats()
+		self.assertEqual(stats, [('foo', '0x20', {16: 50, 128: 50}), ('bar', '0x30', {16: 60})])
diff --git a/gdb-port/top-level-parse.py b/gdb-port/top-level-parse.py
index 9f7b2c13d18232910163720a0d36258b72356099..d37e8babc71bad53e70056fac9104e7f8571e2d5 100644
--- a/gdb-port/top-level-parse.py
+++ b/gdb-port/top-level-parse.py
@@ -167,6 +167,9 @@ class TopLevelParse:
 
 		return averages
 
+	def dump_memory_stats(self):
+		return [(p.name, hex(p.address), p.bytes_used) for p in self.parser_objs.values()]
+
 	# TODO: get_avg_mem_use_all_arenas, get_total_mem_use
 
 top_level_parse = TopLevelParse()