From 98926ddb21f3361caf5d8e3bb9d33c0d56fef7a2 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Tue, 26 Sep 2017 11:27:34 +0200 Subject: [PATCH] Implement basic backtrace cut for --cfg=exception/cutpath. This option became a no-op when the exceptions were ported to C++. --- doc/doxygen/options.doc | 2 +- src/xbt/exception.cpp | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) 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) -- 2.20.1