diff options
author | Zephyron <zephyron@citron-emu.org> | 2025-01-02 17:25:36 +1000 |
---|---|---|
committer | Zephyron <zephyron@citron-emu.org> | 2025-01-02 17:25:36 +1000 |
commit | 167a9e1a5b495b469f119c3bcc7c5057f26a22ee (patch) | |
tree | d253b30faaf8d227f95d33631b2a07d7c6872776 | |
parent | 7dc72a0e9533f9b875658456bc01bfc6b390bb17 (diff) |
arm: Skip duplicate consecutive addresses in backtrace output
Adds logic to track and skip duplicate consecutive addresses when logging
backtraces. This improves log readability by removing redundant entries
that point to the same address in sequence.
-rw-r--r-- | src/core/arm/arm_interface.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/arm/arm_interface.cpp b/src/core/arm/arm_interface.cpp index 1c2557f2c..899c44bd9 100644 --- a/src/core/arm/arm_interface.cpp +++ b/src/core/arm/arm_interface.cpp @@ -18,9 +18,15 @@ void ArmInterface::LogBacktrace(Kernel::KProcess* process) const { "Offset", "Symbol"); LOG_ERROR(Core_ARM, ""); const auto backtrace = GetBacktraceFromContext(process, ctx); + + u64 last_address = 0; for (const auto& entry : backtrace) { + if (entry.address == last_address) { + continue; + } LOG_ERROR(Core_ARM, "{:20}{:016X} {:016X} {:016X} {}", entry.module, entry.address, entry.original_address, entry.offset, entry.name); + last_address = entry.address; } } |