[Dexter] Avoid infinite loop in dbgeng driver
authorJeremy Morse <jeremy.morse@sony.com>
Thu, 4 Feb 2021 14:54:12 +0000 (14:54 +0000)
committerJeremy Morse <jeremy.morse@sony.com>
Thu, 4 Feb 2021 14:57:04 +0000 (14:57 +0000)
This method of the dbgeng debugger driver used to just "pass", as setting
dbgeng free running still leads to numerous errors. This wasn't a problem
in the past because, as it turns out, nothing called the go method.
However, a recent refactor uses it.

Rather than launch dbgeng free running, instead have it single step one
step forwards. This is slow, but it makes progress, where previously we
weren't.

Differential Revision: https://reviews.llvm.org/D91737

debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py

index 69e4b3b..5105b4a 100644 (file)
@@ -103,8 +103,11 @@ class DbgEng(DebuggerBase):
         self.step_info = res
 
     def go(self):
-        # We never go -- we always single step.
-        pass
+        # FIXME: running freely doesn't seem to reliably stop when back in a
+        # relevant source file -- this is likely to be a problem when setting
+        # breakpoints. Until that's fixed, single step instead of running
+        # freely. This isn't very efficient, but at least makes progress.
+        self.step()
 
     def _get_step_info(self, watches, step_index):
         frames = self.step_info