summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/base/SConscript2
-rw-r--r--src/base/trace.cc8
2 files changed, 10 insertions, 0 deletions
diff --git a/src/base/SConscript b/src/base/SConscript
index 548fda7e3..e2a3215d0 100644
--- a/src/base/SConscript
+++ b/src/base/SConscript
@@ -112,6 +112,8 @@ DebugFlag('Annotate', "State machine annotation debugging")
DebugFlag('AnnotateQ', "State machine annotation queue debugging")
DebugFlag('AnnotateVerbose', "Dump all state machine annotation details")
DebugFlag('FmtFlag', "Show the --debug-flag that enabled each debug message")
+DebugFlag('FmtStackTrace',
+ "Print a stack trace after every debug message")
DebugFlag('FmtTicksOff', "Don't show tick count on debug messages")
DebugFlag('GDBAcc', "Remote debugger accesses")
DebugFlag('GDBExtra', "Dump extra information on reads and writes")
diff --git a/src/base/trace.cc b/src/base/trace.cc
index 6b18787c2..70d81a1ea 100644
--- a/src/base/trace.cc
+++ b/src/base/trace.cc
@@ -41,12 +41,15 @@
#include <sstream>
#include <string>
+#include "base/atomicio.hh"
#include "base/debug.hh"
#include "base/logging.hh"
#include "base/output.hh"
#include "base/str.hh"
#include "debug/FmtFlag.hh"
+#include "debug/FmtStackTrace.hh"
#include "debug/FmtTicksOff.hh"
+#include "sim/backtrace.hh"
const std::string &name()
{
@@ -162,6 +165,11 @@ OstreamLogger::logMessage(Tick when, const std::string &name,
stream << message;
stream.flush();
+
+ if (DTRACE(FmtStackTrace)) {
+ print_backtrace();
+ STATIC_ERR("\n");
+ }
}
} // namespace Trace