mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-05-13 00:35:48 +00:00
gdb: dynamic rcmd system & more cleanups
This commit is contained in:
@@ -20,6 +20,9 @@ namespace Ryujinx.HLE.Debugger.Gdb
|
||||
Commands = commands;
|
||||
}
|
||||
|
||||
public void ReplyHex(string data) => Reply(Helpers.ToHex(data));
|
||||
public void ReplyHex(byte[] data) => Reply(Helpers.ToHex(data));
|
||||
|
||||
public void Reply(string cmd)
|
||||
{
|
||||
Logger.Debug?.Print(LogClass.GdbStub, $"Reply: {cmd}");
|
||||
@@ -197,11 +200,10 @@ namespace Ryujinx.HLE.Debugger.Gdb
|
||||
break;
|
||||
}
|
||||
|
||||
Reply(Helpers.ToHex(
|
||||
DebugProcess.IsThreadPaused(DebugProcess.GetThread(threadId.Value))
|
||||
? "Paused"
|
||||
: "Running"
|
||||
)
|
||||
ReplyHex(
|
||||
DebugProcess.IsThreadPaused(DebugProcess.GetThread(threadId.Value))
|
||||
? "Paused"
|
||||
: "Running"
|
||||
);
|
||||
|
||||
break;
|
||||
|
||||
@@ -197,7 +197,7 @@ namespace Ryujinx.HLE.Debugger.Gdb
|
||||
{
|
||||
byte[] data = new byte[len];
|
||||
Debugger.DebugProcess.CpuMemory.Read(addr, data);
|
||||
Processor.Reply(Helpers.ToHex(data));
|
||||
Processor.ReplyHex(data);
|
||||
}
|
||||
catch (InvalidMemoryRegionException)
|
||||
{
|
||||
@@ -422,17 +422,9 @@ namespace Ryujinx.HLE.Debugger.Gdb
|
||||
string command = Helpers.FromHex(hexCommand);
|
||||
Logger.Debug?.Print(LogClass.GdbStub, $"Received Rcmd: {command}");
|
||||
|
||||
string response = command.Trim().ToLowerInvariant() switch
|
||||
{
|
||||
"help" => "backtrace\nbt\nregisters\nreg\nget info\nminidump\n",
|
||||
"get info" => Debugger.GetProcessInfo(),
|
||||
"backtrace" or "bt" => Debugger.GetStackTrace(),
|
||||
"registers" or "reg" => Debugger.GetRegisters(),
|
||||
"minidump" => Debugger.GetMinidump(),
|
||||
_ => $"Unknown command: {command}\n"
|
||||
};
|
||||
var rcmdDelegate = Debugger.FindRcmdDelegate(command);
|
||||
|
||||
Processor.Reply(Helpers.ToHex(response));
|
||||
Processor.ReplyHex(rcmdDelegate?.Invoke(Debugger) ?? $"Unknown command: {command}\n");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
@@ -20,8 +20,8 @@ namespace Ryujinx.HLE.Debugger.Gdb
|
||||
32 => Helpers.ToHex(BitConverter.GetBytes(state.DebugPc)),
|
||||
33 => Helpers.ToHex(BitConverter.GetBytes(state.Pstate)),
|
||||
>= 34 and <= 65 => Helpers.ToHex(state.GetV(registerId - 34).ToArray()),
|
||||
66 => Helpers.ToHex(BitConverter.GetBytes((uint)state.Fpsr)),
|
||||
67 => Helpers.ToHex(BitConverter.GetBytes((uint)state.Fpcr)),
|
||||
66 => Helpers.ToHex(BitConverter.GetBytes(state.Fpsr)),
|
||||
67 => Helpers.ToHex(BitConverter.GetBytes(state.Fpcr)),
|
||||
_ => null
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user