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>
v6.x
Ben Noordhuis 9 years ago
committed by Jeremiah Senkpiel
parent
commit
c96d701769
  1. 1
      src/node.cc
  2. 11
      src/util.h

1
src/node.cc

@ -2452,7 +2452,6 @@ static void OnFatalError(const char* location, const char* message) {
} else { } else {
PrintErrorString("FATAL ERROR: %s\n", message); PrintErrorString("FATAL ERROR: %s\n", message);
} }
DumpBacktrace(stderr);
fflush(stderr); fflush(stderr);
ABORT(); 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 // Windows 8+ does not like abort() in Release mode
#ifdef _WIN32 #ifdef _WIN32
#define ABORT() raise(SIGABRT) #define ABORT_NO_BACKTRACE() raise(SIGABRT)
#else #else
#define ABORT() abort() #define ABORT_NO_BACKTRACE() abort()
#endif #endif
#define ABORT() \
do { \
node::DumpBacktrace(stderr); \
fflush(stderr); \
ABORT_NO_BACKTRACE(); \
} while (0)
#if defined(NDEBUG) #if defined(NDEBUG)
# define ASSERT(expression) # define ASSERT(expression)
# define CHECK(expression) \ # define CHECK(expression) \

Loading…
Cancel
Save