Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
do not store name in s4u::Disk
[simgrid.git] / src / xbt / backtrace.cpp
index 03e5ad7..ec5c0a0 100644 (file)
@@ -10,7 +10,6 @@
 #include <xbt/sysdep.h>
 #include <xbt/virtu.h>
 
-#include <boost/algorithm/string/predicate.hpp>
 #include <cstdio>
 #include <cstdlib>
 #include <sstream>
@@ -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;
       }
     }