GDB 7.11 vs. 7.12+ -- expected behaviour after posting a "continue" event?

Adrian Oltean adrian.oltean@nxp.com
Sat Feb 15 18:30:00 GMT 2020


Hi,

I have a set of python scripts that execute "continue" via gdb.post_event() at some point. What I noticed is a weird behaviour after switching to GDB 7.12+. Initially, I've been using GDB 7.11. 

Long story short is that once I execute a gdb.post_event() with a "continue" command, GDB 7.12+ no longer accepts CTRL+C as a way to interrupt the target app. Once I execute CTRL+C, I see "^CQuit" being printed in the console but target app is not being interrupted - "info program" says it's still running. However, if I type "interrupt", I see the program gets stopped. When using GDB 7.11, CTRL+C works as expected (from my point of view) after executing the gdb.post_event() with the "continue" command.

Steps to reproduce the described behaviours:
  1. Build GDB 7.11 and GDB 8.3 (or GDB 7.12) with python support
  2. Build a simple "test" app that executes an infinite loop; we'll use it for debugging
  3. In do_continue.py, write a callable like the one below:
import _gdb
class DoContinue():
    def __call__(self):
        _gdb.execute("continue")
_gdb.post_event(DoContinue())
  4. Experiment the following use case with the two GDB versions mentioned:
     a. Start debugging - "gdb test"
     b. Run the app - "run"
     c. Hit CTRL+C; app must be correctly interrupted
     d. Run the script with the gdb.post_event() - "source do_continue.py"; app will be running at this point
     e. Press CTRL+C. Program gets interrupted when using GDB 7.11 but not when using GDB 8.3.

Can someone explain the behaviour seen in GDB 7.12+? Is it expected? How can I make GDB 7.12+ behave like GDB 7.11?

Thank you,
Adrian



More information about the Gdb mailing list