diff --git a/lib/cli.py b/lib/cli.py
index 50f5363cb99e1a7ece028df3245bf67793647905..1932a009a5d937e405abba3b9bbb857be9c4ee35 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -2248,11 +2248,18 @@ class JobExecutor(object):
     SetGenericOpcodeOpts(ops, self.opts)
     self.queue.append((name, ops))
 
-  def SubmitPending(self):
+  def SubmitPending(self, each=False):
     """Submit all pending jobs.
 
     """
-    results = self.cl.SubmitManyJobs([row[1] for row in self.queue])
+    if each:
+      results = []
+      for row in self.queue:
+        # SubmitJob will remove the success status, but raise an exception if
+        # the submission fails, so we'll notice that anyway.
+        results.append([True, self.cl.SubmitJob(row[1])])
+    else:
+      results = self.cl.SubmitManyJobs([row[1] for row in self.queue])
     for (idx, ((status, data), (name, _))) in enumerate(zip(results,
                                                             self.queue)):
       self.jobs.append((idx, status, data, name))
diff --git a/scripts/gnt-debug b/scripts/gnt-debug
index 5dc7dc63045f3ee9fb7b7c66c5784a84381bc44a..c96deca92a9bd1021d37f93139d75cbab012702e 100755
--- a/scripts/gnt-debug
+++ b/scripts/gnt-debug
@@ -90,7 +90,7 @@ def GenericOpCodes(opts, args):
     t1 = time.time()
     ToStdout("Submitting...")
 
-  jex.SubmitPending()
+  jex.SubmitPending(each=opts.each)
 
   if opts.timing_stats:
     t2 = time.time()
@@ -174,6 +174,8 @@ commands = {
                 help="Repeat the job this number of times"),
      cli_option("--timing-stats", default=False,
                 action="store_true", help="Show timing stats"),
+     cli_option("--each", default=False, action="store_true",
+                help="Submit each job separately"),
      ],
     "<op_list_file...>", "Submits jobs built from json files"
     " containing a list of serialized opcodes"),