mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-06-27 22:06:24 +02:00
gdb: Fix crash when gdb client disconnected in some cases
This commit is contained in:
parent
bc68502179
commit
f630d5ba99
1 changed files with 33 additions and 23 deletions
|
@ -208,30 +208,40 @@ namespace Ryujinx.HLE.Debugger
|
||||||
while (!_shuttingDown)
|
while (!_shuttingDown)
|
||||||
{
|
{
|
||||||
IMessage msg = Messages.Take();
|
IMessage msg = Messages.Take();
|
||||||
switch (msg)
|
try {
|
||||||
|
switch (msg)
|
||||||
|
{
|
||||||
|
case BreakInMessage:
|
||||||
|
Logger.Notice.Print(LogClass.GdbStub, "Break-in requested");
|
||||||
|
CommandQuery();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SendNackMessage:
|
||||||
|
WriteStream.WriteByte((byte)'-');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CommandMessage { Command: var cmd }:
|
||||||
|
Logger.Debug?.Print(LogClass.GdbStub, $"Received Command: {cmd}");
|
||||||
|
WriteStream.WriteByte((byte)'+');
|
||||||
|
ProcessCommand(cmd);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ThreadBreakMessage { Context: var ctx }:
|
||||||
|
DebugProcess.DebugStop();
|
||||||
|
Reply($"T05thread:{ctx.ThreadUid:x};");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KillMessage:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
case BreakInMessage:
|
Logger.Error?.Print(LogClass.GdbStub, "Error while processing GDB messages", e);
|
||||||
Logger.Notice.Print(LogClass.GdbStub, "Break-in requested");
|
}
|
||||||
CommandQuery();
|
catch (NullReferenceException e)
|
||||||
break;
|
{
|
||||||
|
Logger.Error?.Print(LogClass.GdbStub, "Error while processing GDB messages", e);
|
||||||
case SendNackMessage:
|
|
||||||
WriteStream.WriteByte((byte)'-');
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CommandMessage { Command: var cmd }:
|
|
||||||
Logger.Debug?.Print(LogClass.GdbStub, $"Received Command: {cmd}");
|
|
||||||
WriteStream.WriteByte((byte)'+');
|
|
||||||
ProcessCommand(cmd);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ThreadBreakMessage { Context: var ctx }:
|
|
||||||
DebugProcess.DebugStop();
|
|
||||||
Reply($"T05thread:{ctx.ThreadUid:x};");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KillMessage:
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue