+/* ================================= Debugging ============================== */
+
+static void debugCommand(redisClient *c) {
+ if (!strcasecmp(c->argv[1]->ptr,"segfault")) {
+ *((char*)-1) = 'x';
+ } else {
+ addReplySds(c,sdsnew("-ERR Syntax error, try DEBUG SEGFAULT\r\n"));
+ }
+}
+
+static void onSigsegv(int sig) {
+ void *trace[25];
+ int n = backtrace(trace, 25);
+ char **symbols = backtrace_symbols(trace, n);
+
+ redisLog(REDIS_WARNING,"Got %s!!! Redis crashed, backtrace:",
+ sig == SIGSEGV ? "SIGSEGV" : "SIGBUS");
+ for (int i = 0; i < n; i++)
+ redisLog(REDIS_WARNING,symbols[i]);
+ exit(1);
+}
+