Support vanilla gdb

Issue #4 resolved
Botond Ballo repo owner created an issue

The backend currently requires rr. We can make it support vanilla gdb by skipping the "reverse-finish" operation if we're running in vanilla gdb; in that case, we would only produce execution information for the remainder of the current function (and so, if the user wanted execution information for an entire function call, they'd have to call it immediately after stepping into the function).

To implement this, the backend needs to be able to tell whether it's running inside rr or vanilla gdb. I've looked into this a bit, and found two options for doing this:

  • Examine the prompt. rr changes the prompt from "(gdb)" to "(rr)". A plugin can query the prompt using |gdb.parameter("prompt")|. However, this method is not completely reliable, because a user can potentially change the prompt to anything by running |set prompt|.
  • Try to instantiate |RRCmd|, which is a type exposed to plugins that exists in rr but not in gdb. If instantiation causes a |NameError| to be thrown, we know we're running in vanilla gdb.

Comments (2)

  1. Log in to comment