diff --git a/gdb-port/top-level-parse.py b/gdb-port/top-level-parse.py
index db7922528acd6eb19e653c18064e9495ebeccadd..077731c17fbddd0e733cd7511ba65ca3ac03dbbe 100644
--- a/gdb-port/top-level-parse.py
+++ b/gdb-port/top-level-parse.py
@@ -74,6 +74,7 @@ class TopLevelParse:
 			parser_obj = Parser(None, parser)
 			self.parser_objs[parser] = parser_obj
 		self.h_do_parse_parser = parser_obj # TODO: current_parser_env should be set here instead too
+		parser_obj.increment_apply_count()
 		if parser_stack.parse_state is None and parser_stack.parse_state != parse_state:
 			self.first_h_do_parse_after_packrat_parse(parse_state, arena)
 
@@ -84,6 +85,10 @@ class TopLevelParse:
 		# Parsers are only pushed on the stack in perform_lowlevel_parse, which doesn't get called when h_do_parse() gets the result from cache.
 		# If other backends are supported, this might change to pushing/popping the stack in h_do_parse()
 		self.h_do_parse_parser = parser_obj # Restore the "current" parser, otherwise it'll show the parser h_do_parse() was last called with on the GUI and backtrace
+		if ret_val:
+			parser_obj.increment_successful_parse_count()
+		else:
+			parser_obj.increment_failed_parse_count()
 
 		if self.memory_stat_method == HammerMemoryStatisticsMethod.DETAILED_ARENA_STATS:
 		#if self.extended_arena_stats_available(): # DEBUG