+// Make our tests fully reproducible despite the subtle differences of strsignal() across archs
+static const char* signal_name(int status)
+{
+ switch (WTERMSIG(status)) {
+ case SIGABRT: // FreeBSD uses "Abort trap" as a strsignal for SIGABRT
+ return "Aborted";
+ case SIGSEGV: // MacOSX uses "Segmentation fault: 11" for SIGKILL
+ return "Segmentation fault";
+ default:
+ return strsignal(WTERMSIG(status));
+ }
+}
+
+std::vector<std::string> Exploration::get_textual_trace()
+{
+ std::vector<std::string> trace;
+ for (auto const& transition : get_record_trace()) {
+ auto call_location = transition->get_call_location();
+ if (not call_location.empty())
+ trace.push_back(xbt::string_printf("Actor %ld in %s ==> simcall: %s", transition->aid_, call_location.c_str(),
+ transition->to_string().c_str()));
+ else
+ trace.push_back(xbt::string_printf("Actor %ld in simcall %s", transition->aid_, transition->to_string().c_str()));
+ }
+ return trace;
+}