From 7951112ecca581dcf59446e04e8224bcb0eb6452 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Wed, 7 Apr 2021 11:07:16 +0200 Subject: [PATCH] Make BacktraceImpl::resolve a bit faster. Print the full frame information all at once. --- src/xbt/backtrace.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/xbt/backtrace.cpp b/src/xbt/backtrace.cpp index 03e5ad742a..7324dca9dd 100644 --- a/src/xbt/backtrace.cpp +++ b/src/xbt/backtrace.cpp @@ -44,20 +44,20 @@ public: std::stringstream ss; int frame_count = 0; - int state = 0; + bool print = false; - for (boost::stacktrace::frame frame : st) { - if (state == 1) { - if (boost::starts_with(frame.name(), "simgrid::xbt::MainFunction") || - boost::starts_with(frame.name(), "simgrid::kernel::context::Context::operator()()")) + for (boost::stacktrace::frame const& frame : st) { + const std::string frame_name = frame.name(); + if (print) { + if (boost::starts_with(frame_name, "simgrid::xbt::MainFunction") || + boost::starts_with(frame_name, "simgrid::kernel::context::Context::operator()()")) break; - ss << " -> " << frame_count++ << "# " << frame.name() << " at " << frame.source_file() << ":" - << frame.source_line() << std::endl; - if (frame.name() == "main") + ss << " -> " << frame_count++ << "# " << frame << "\n"; + if (frame_name == "main") break; } else { - if (frame.name() == "simgrid::xbt::Backtrace::Backtrace()") - state = 1; + if (frame_name == "simgrid::xbt::Backtrace::Backtrace()") + print = true; } } -- 2.20.1