Browse Source

src: print backtrace on abort/unreachable code

Print a C backtrace on fatal errors to make it easier to debug issues.

PR-URL: https://github.com/nodejs/node/pull/6734
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
v7.x
Ben Noordhuis 9 years ago
parent
commit
e574f5b700
  1. 1
      src/node.cc
  2. 11
      src/util.h

1
src/node.cc

@ -2398,7 +2398,6 @@ static void OnFatalError(const char* location, const char* message) {
} else {
PrintErrorString("FATAL ERROR: %s\n", message);
}
DumpBacktrace(stderr);
fflush(stderr);
ABORT();
}

11
src/util.h

@ -38,11 +38,18 @@ template <typename T> using remove_reference = std::remove_reference<T>;
// Windows 8+ does not like abort() in Release mode
#ifdef _WIN32
#define ABORT() raise(SIGABRT)
#define ABORT_NO_BACKTRACE() raise(SIGABRT)
#else
#define ABORT() abort()
#define ABORT_NO_BACKTRACE() abort()
#endif
#define ABORT() \
do { \
node::DumpBacktrace(stderr); \
fflush(stderr); \
ABORT_NO_BACKTRACE(); \
} while (0)
#if defined(NDEBUG)
# define ASSERT(expression)
# define CHECK(expression) \

Loading…
Cancel
Save