From 5ac7654be1be0482b200ad43f284627c95a384bb Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sat, 15 Aug 2020 13:48:34 +0200 Subject: [PATCH] Add option to get depth of stack trace. --- src/Exception.hpp | 4 ++-- tests/ExceptionTests.cpp | 9 ++------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/Exception.hpp b/src/Exception.hpp index 8a971c4..814aa63 100644 --- a/src/Exception.hpp +++ b/src/Exception.hpp @@ -18,11 +18,11 @@ namespace ArbUt { [[nodiscard]] const char* what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW override { return _msg.c_str(); } - [[nodiscard]] std::string GetStacktrace() const { + [[nodiscard]] std::string GetStacktrace(size_t depth = 6) const { backward::TraceResolver tr; tr.load_stacktrace(_stack); std::stringstream ss; - for (size_t i = 3; i < _stack.size(); ++i) { + for (size_t i = 3; i < _stack.size() && i < depth + 3; ++i) { backward::ResolvedTrace trace = tr.resolve(_stack[i]); if (trace.source.filename.empty()){ diff --git a/tests/ExceptionTests.cpp b/tests/ExceptionTests.cpp index 29c7cdf..f9d6459 100644 --- a/tests/ExceptionTests.cpp +++ b/tests/ExceptionTests.cpp @@ -8,13 +8,8 @@ TEST_CASE("Throw exception, get stack trace") { throw ArbUt::Exception("foobar"); } catch (const ArbUt::Exception& e) { - REQUIRE(e.GetStacktrace() == - "ExceptionTests.cpp[8] ____C_A_T_C_H____T_E_S_T____0()\n" - "catch.hpp[14036] Catch::TestInvokerAsFunction::invoke() const\n" - "catch.hpp[13929] Catch::TestCase::invoke() const\n" - "catch.hpp[12791] Catch::RunContext::invokeActiveTestCase()\n" - "catch.hpp[12756] Catch::RunContext::runCurrentTest(std::__cxx11::basic_string