From: Arnaud Giersch Date: Tue, 26 Sep 2017 09:27:34 +0000 (+0200) Subject: Implement basic backtrace cut for --cfg=exception/cutpath. X-Git-Tag: v3_17~78 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/98926ddb21f3361caf5d8e3bb9d33c0d56fef7a2?ds=sidebyside Implement basic backtrace cut for --cfg=exception/cutpath. This option became a no-op when the exceptions were ported to C++. --- diff --git a/doc/doxygen/options.doc b/doc/doxygen/options.doc index e0eb74791a..64ce0db6f5 100644 --- a/doc/doxygen/options.doc +++ b/doc/doxygen/options.doc @@ -1292,7 +1292,7 @@ when \b verbose-exit is set to 0 (it is to 1 by default). \subsection options_exception_cutpath Truncate local path from exception backtrace \verbatim ---cfg=exceptions/cutpath:1 +--cfg=exception/cutpath:1 \endverbatim This configuration option is used to remove the path from the diff --git a/src/xbt/exception.cpp b/src/xbt/exception.cpp index 5483ae5370..a1c6d0b52b 100644 --- a/src/xbt/exception.cpp +++ b/src/xbt/exception.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2005-2016. The SimGrid Team. +/* Copyright (c) 2005-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -15,6 +15,8 @@ #include #include +#include +#include #include #include #include @@ -47,7 +49,7 @@ void logException( XBT_LOG(prio, "%s %s: %s", context, name.get(), exception.what()); // Do we have a backtrace? - if (with_context != nullptr) { + if (with_context != nullptr && not xbt_cfg_get_boolean("exception/cutpath")) { auto backtrace = simgrid::xbt::resolveBacktrace( with_context->backtrace().data(), with_context->backtrace().size()); for (std::string const& s : backtrace) @@ -76,6 +78,10 @@ void logException( static void showBacktrace(std::vector& bt) { + if (xbt_cfg_get_boolean("exception/cutpath")) { + XBT_LOG(xbt_log_priority_critical, "Display of current backtrace disabled by --cfg=exception/cutpath."); + return; + } std::vector res = resolveBacktrace(&bt[0], bt.size()); XBT_LOG(xbt_log_priority_critical, "Current backtrace:"); for (std::string const& s : res)