@@ -29,14 +29,19 @@ def __init__(self):
2929 self .thrd = None
3030 self .fallback_to_parsing = False
3131 self .state = "stopped"
32+ self .exited_or_ran = False
3233
3334 def handle_continue (event ):
3435 self .state = "running"
36+ self .exited_or_ran = True
3537 gdb .events .cont .connect (handle_continue )
3638 def handle_stop (event ):
3739 self .state = "stopped"
40+ def handle_exit (event ):
41+ self .state = "stopped"
42+ self .exited_or_ran = True
3843 gdb .events .stop .connect (handle_stop )
39- gdb .events .exited .connect (handle_stop )
44+ gdb .events .exited .connect (handle_exit )
4045
4146 def invoke (self , arg , from_tty ):
4247 if not self .thrd :
@@ -84,6 +89,9 @@ def _handle_command(self, command, sock, addr):
8489 elif request == "get-current-frame-location" :
8590 self ._send_response (self ._get_current_frame_location (),
8691 req_id , sock , addr )
92+ elif request == "has-exited-or-ran" :
93+ self ._send_response (self ._get_reset_exited_or_ran (),
94+ req_id , sock , addr )
8795 elif request == "handle-command" :
8896 # pylint: disable=broad-except
8997 try :
@@ -119,6 +127,12 @@ def _send_response(self, response, req_id, sock, addr):
119127 def _get_process_state (self ):
120128 return self .state
121129
130+ def _get_reset_exited_or_ran (self ):
131+ if (self .exited_or_ran ):
132+ self .exited_or_ran = False
133+ return True
134+ return False
135+
122136 def _get_current_frame_location (self ):
123137 try :
124138 frame = gdb .selected_frame ()
0 commit comments