mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-10-18 07:04:45 +00:00
gdb: Add monitor minidump
command (ryubing/ryujinx!158)
See merge request ryubing/ryujinx!158
This commit is contained in:
parent
ef9810582a
commit
1865be47cf
@ -1037,12 +1037,13 @@ namespace Ryujinx.HLE.Debugger
|
|||||||
|
|
||||||
string response = command.Trim().ToLowerInvariant() switch
|
string response = command.Trim().ToLowerInvariant() switch
|
||||||
{
|
{
|
||||||
"help" => "backtrace\nbt\nregisters\nreg\nget info\n",
|
"help" => "backtrace\nbt\nregisters\nreg\nget info\nminidump",
|
||||||
"get info" => GetProcessInfo(),
|
"get info" => GetProcessInfo(),
|
||||||
"backtrace" => GetStackTrace(),
|
"backtrace" => GetStackTrace(),
|
||||||
"bt" => GetStackTrace(),
|
"bt" => GetStackTrace(),
|
||||||
"registers" => GetRegisters(),
|
"registers" => GetRegisters(),
|
||||||
"reg" => GetRegisters(),
|
"reg" => GetRegisters(),
|
||||||
|
"minidump" => GetMinidump(),
|
||||||
_ => $"Unknown command: {command}\n"
|
_ => $"Unknown command: {command}\n"
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1077,6 +1078,42 @@ namespace Ryujinx.HLE.Debugger
|
|||||||
return Process.Debugger.GetCpuRegisterPrintout(DebugProcess.GetThread(gThread.Value));
|
return Process.Debugger.GetCpuRegisterPrintout(DebugProcess.GetThread(gThread.Value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetMinidump()
|
||||||
|
{
|
||||||
|
var response = new StringBuilder();
|
||||||
|
response.AppendLine("=== Begin Minidump ===\n");
|
||||||
|
response.AppendLine(GetProcessInfo());
|
||||||
|
|
||||||
|
foreach (var thread in GetThreads())
|
||||||
|
{
|
||||||
|
response.AppendLine($"=== Thread {thread.ThreadUid} ===");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string stackTrace = Process.Debugger.GetGuestStackTrace(thread);
|
||||||
|
response.AppendLine(stackTrace);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
response.AppendLine($"[Error getting stack trace: {e.Message}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string registers = Process.Debugger.GetCpuRegisterPrintout(thread);
|
||||||
|
response.AppendLine(registers);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
response.AppendLine($"[Error getting registers: {e.Message}]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
response.AppendLine("=== End Minidump ===");
|
||||||
|
|
||||||
|
Logger.Info?.Print(LogClass.GdbStub, response.ToString());
|
||||||
|
return response.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private string GetProcessInfo()
|
private string GetProcessInfo()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
Loading…
Reference in New Issue
Block a user