aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs
diff options
context:
space:
mode:
authorjduncanator <1518948+jduncanator@users.noreply.github.com>2019-03-15 14:37:54 +1100
committerGitHub <noreply@github.com>2019-03-15 14:37:54 +1100
commitefebd8f94de03ef5cab63803f0cf37fc39258682 (patch)
tree57f7a6711c27290d3d0a00a918bdb965816eaf75 /Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs
parent1bef70c068f8aeb6a3a518b8ca635de19122da14 (diff)
Print Guest Stack Trace in ServiceNotImplemented Exception (#650)
* Print Guest Stack Trace in ServiceNotImplemented Exception * Remove PrintGuestStackTrace * Print Process Name and PID at the start of guest stack trace
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs17
1 files changed, 8 insertions, 9 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs b/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs
index 0268de7d..d31f95b4 100644
--- a/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Process/HleProcessDebugger.cs
@@ -4,6 +4,7 @@ using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Diagnostics.Demangler;
using Ryujinx.HLE.HOS.Kernel.Memory;
using Ryujinx.HLE.Loaders.Elf;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -41,14 +42,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
_images = new List<Image>();
}
- public void PrintGuestStackTrace(CpuThreadState threadState)
+ public string GetGuestStackTrace(CpuThreadState threadState)
{
EnsureLoaded();
StringBuilder trace = new StringBuilder();
- trace.AppendLine("Guest stack trace:");
-
void AppendTrace(long address)
{
Image image = GetImage(address, out int imageIndex);
@@ -68,22 +67,22 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
string imageName = GetGuessedNsoNameFromIndex(imageIndex);
- string imageNameAndOffset = $"[{_owner.Name}] {imageName}:0x{offset:x8}";
-
- trace.AppendLine($" {imageNameAndOffset} {subName}");
+ trace.AppendLine($" {imageName}:0x{offset:x8} {subName}");
}
else
{
- trace.AppendLine($" [{_owner.Name}] ??? {subName}");
+ trace.AppendLine($" ??? {subName}");
}
}
//TODO: ARM32.
long framePointer = (long)threadState.X29;
+ trace.AppendLine($"Process: {_owner.Name}, PID: {_owner.Pid}");
+
while (framePointer != 0)
{
- if ((framePointer & 7) != 0 ||
+ if ((framePointer & 7) != 0 ||
!_owner.CpuMemory.IsMapped(framePointer) ||
!_owner.CpuMemory.IsMapped(framePointer + 8))
{
@@ -97,7 +96,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
framePointer = _owner.CpuMemory.ReadInt64(framePointer);
}
- Logger.PrintInfo(LogClass.Cpu, trace.ToString());
+ return trace.ToString();
}
private bool TryGetSubName(Image image, long address, out string name)