/* backtrace_linux - backtrace displaying on linux platform */
/* This file is included by ex.cpp on need (have execinfo.h, popen & addrline)*/
-/* Copyright (c) 2008-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2008-2018. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
return "";
}
+std::vector<std::string> resolveBacktrace(xbt_backtrace_location_t const* loc, std::size_t count) // deprecated
+{
+ return resolve_backtrace(loc, count);
+}
+
//FIXME: This code could be greatly improved/simplifyied with
// http://cairo.sourcearchive.com/documentation/1.9.4/backtrace-symbols_8c-source.html
-std::vector<std::string> resolveBacktrace(
- xbt_backtrace_location_t const* loc, std::size_t count)
+std::vector<std::string> resolve_backtrace(xbt_backtrace_location_t const* loc, std::size_t count)
{
std::vector<std::string> result;
XBT_VERB("Fire a first command: '%s'", cmd.c_str());
FILE* pipe = popen(cmd.c_str(), "r");
- if (not pipe) {
- xbt_die("Cannot fork addr2line to display the backtrace");
- }
+ xbt_assert(pipe, "Cannot fork addr2line to display the backtrace");
/* To read the output of addr2line */
char line_func[1024];
line_func[strlen(line_func) - 1] = '\0';
} else {
XBT_VERB("Cannot run fgets to look for symbol %zu, addr %s", i, addrs[i].c_str());
- strncpy(line_func, "???",3);
+ strncpy(line_func, "???", 4);
}
if (fgets(line_pos, 1024, pipe)) {
line_pos[strlen(line_pos) - 1] = '\0';
/* Here we go, fire an addr2line up */
std::string subcmd = std::string(ADDR2LINE) + " -f -e " + p + " " + addrs[i];
- XBT_VERB("Fire a new command: '%s'", subcmd.c_str());
+ XBT_VERB("Fire another command: '%s'", subcmd.c_str());
FILE* subpipe = popen(subcmd.c_str(), "r");
if (not subpipe) {
xbt_die("Cannot fork addr2line to display the backtrace");
line_func[strlen(line_func) - 1] = '\0';
} else {
XBT_VERB("Cannot read result of subcommand %s", subcmd.c_str());
- strncpy(line_func, "???",3);
+ strncpy(line_func, "???", 4);
}
if (fgets(line_pos, 1024, subpipe)) {
line_pos[strlen(line_pos) - 1] = '\0';