diff options
| author | 2022-04-05 17:18:31 -0400 | |
|---|---|---|
| committer | 2022-04-05 17:18:31 -0400 | |
| commit | e4c3565ebe2c6ba93dbc1e4dabe61ada6c48ad79 (patch) | |
| tree | 87f9f282ba6c9450496ffb73f9937165f9120e70 | |
| parent | Merge pull request #8158 from Tachi107/patch-1 (diff) | |
| parent | dynarmic: Print stack trace on unrecognised instruction or other exception (diff) | |
| download | yuzu-e4c3565ebe2c6ba93dbc1e4dabe61ada6c48ad79.tar.gz yuzu-e4c3565ebe2c6ba93dbc1e4dabe61ada6c48ad79.tar.xz yuzu-e4c3565ebe2c6ba93dbc1e4dabe61ada6c48ad79.zip | |
Merge pull request #8159 from merryhime/pst
dynarmic: Print stack trace on unrecognised instruction or other exception
Diffstat (limited to '')
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_32.cpp | 2 | ||||
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_64.cpp | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index d4cbd0c20..054572445 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp | |||
| @@ -70,11 +70,13 @@ public: | |||
| 70 | } | 70 | } |
| 71 | 71 | ||
| 72 | void InterpreterFallback(u32 pc, std::size_t num_instructions) override { | 72 | void InterpreterFallback(u32 pc, std::size_t num_instructions) override { |
| 73 | parent.LogBacktrace(); | ||
| 73 | UNIMPLEMENTED_MSG("This should never happen, pc = {:08X}, code = {:08X}", pc, | 74 | UNIMPLEMENTED_MSG("This should never happen, pc = {:08X}, code = {:08X}", pc, |
| 74 | MemoryReadCode(pc)); | 75 | MemoryReadCode(pc)); |
| 75 | } | 76 | } |
| 76 | 77 | ||
| 77 | void ExceptionRaised(u32 pc, Dynarmic::A32::Exception exception) override { | 78 | void ExceptionRaised(u32 pc, Dynarmic::A32::Exception exception) override { |
| 79 | parent.LogBacktrace(); | ||
| 78 | LOG_CRITICAL(Core_ARM, | 80 | LOG_CRITICAL(Core_ARM, |
| 79 | "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X}, thumb = {})", | 81 | "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X}, thumb = {})", |
| 80 | exception, pc, MemoryReadCode(pc), parent.IsInThumbMode()); | 82 | exception, pc, MemoryReadCode(pc), parent.IsInThumbMode()); |
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 6d5a1ecfd..7ff8f9495 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp | |||
| @@ -81,6 +81,7 @@ public: | |||
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | void InterpreterFallback(u64 pc, std::size_t num_instructions) override { | 83 | void InterpreterFallback(u64 pc, std::size_t num_instructions) override { |
| 84 | parent.LogBacktrace(); | ||
| 84 | LOG_ERROR(Core_ARM, | 85 | LOG_ERROR(Core_ARM, |
| 85 | "Unimplemented instruction @ 0x{:X} for {} instructions (instr = {:08X})", pc, | 86 | "Unimplemented instruction @ 0x{:X} for {} instructions (instr = {:08X})", pc, |
| 86 | num_instructions, MemoryReadCode(pc)); | 87 | num_instructions, MemoryReadCode(pc)); |
| @@ -118,6 +119,7 @@ public: | |||
| 118 | return; | 119 | return; |
| 119 | case Dynarmic::A64::Exception::Breakpoint: | 120 | case Dynarmic::A64::Exception::Breakpoint: |
| 120 | default: | 121 | default: |
| 122 | parent.LogBacktrace(); | ||
| 121 | ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})", | 123 | ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})", |
| 122 | static_cast<std::size_t>(exception), pc, MemoryReadCode(pc)); | 124 | static_cast<std::size_t>(exception), pc, MemoryReadCode(pc)); |
| 123 | } | 125 | } |