X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3b2cba76f01c60f2dea5ff0b1cb0b30931f90748..1c3328f8047e2e5602ed3cd87044ce274e9ff978:/src/xbt/backtrace.cpp diff --git a/src/xbt/backtrace.cpp b/src/xbt/backtrace.cpp index 03e5ad742a..ec5c0a0059 100644 --- a/src/xbt/backtrace.cpp +++ b/src/xbt/backtrace.cpp @@ -10,7 +10,6 @@ #include #include -#include #include #include #include @@ -44,20 +43,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 (frame_name.rfind("simgrid::xbt::MainFunction", 0) == 0 || + frame_name.rfind("simgrid::kernel::context::Context::operator()()", 0) == 0) 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; } }