microsoft / MIEngine

The Visual Studio MI Debug Engine ("MIEngine") provides an open-source Visual Studio Debugger extension that works with MI-enabled debuggers such as gdb and lldb.
MIT License
818 stars 218 forks source link

Fix Remote AsyncBreak #1399

Closed WardenGnaw closed 1 year ago

WardenGnaw commented 1 year ago

https://github.com/microsoft/MIEngine/commit/5f6213cf60fdd271cd7bf6b03b4225a914a10da5 accidently broke async-break for gdb remote scenarios as we send "-exec-interrupt" for async-break instead of sending a 'kill SIGTRAP'.

This PR modifies the IsAsyncBreakSignal to return a newly created enum AsyncBreakSignal, and renames it to GetAsyncBreakSignal. GetAsyncBreakSignal will now return if it saw a SIGINT, SIGTRAP, or None if its an unknown signal related to async break or no signal was retrieved at all.

This will be used along with a new flag called IsUsingExecInterrupt, which will be set before -exec-interrupt is sent to the debugger.

IsUsingExecInterrupt will be reset when the engine resolves the async-break from the user (see DebuggedProcess.cs changes) or when we are resolving an internal async break (See Debugger.cs DoInternalBreakActions).

Resolves: #1382