]> git.saurik.com Git - redis.git/commitdiff
added support to dump registers on crash on Linux x32
authorantirez <antirez@gmail.com>
Fri, 20 Jan 2012 13:37:50 +0000 (14:37 +0100)
committerantirez <antirez@gmail.com>
Fri, 20 Jan 2012 13:37:50 +0000 (14:37 +0100)
src/debug.c

index bddb082e527f3c10a6f6a135875a81495edf1623..9cfcbdaa0db7cc146a1fcb4dd8605feee6d2cc96 100644 (file)
@@ -496,7 +496,30 @@ void logRegisters(ucontext_t *uc) {
     logStackContent((void**)uc->uc_mcontext->__ss.__esp);
   #endif
 #elif defined(__i386__)
-    return (void*) uc->uc_mcontext.gregs[14]; /* Linux 32 */
+    redisLog(REDIS_WARNING,
+    "\n"
+    "EAX:%p EBX:%p ECX:%p EDX:%p\n"
+    "EDI:%p ESI:%p EBP:%p ESP:%p\n"
+    "SS:%p  EFL:%p EIP:%p CS:%p\n"
+    "DS:%p  ES:%p  FS:%p  GS:%p",
+        uc->uc_mcontext.gregs[11],
+        uc->uc_mcontext.gregs[8],
+        uc->uc_mcontext.gregs[10],
+        uc->uc_mcontext.gregs[9],
+        uc->uc_mcontext.gregs[4],
+        uc->uc_mcontext.gregs[5],
+        uc->uc_mcontext.gregs[6],
+        uc->uc_mcontext.gregs[7],
+        uc->uc_mcontext.gregs[18],
+        uc->uc_mcontext.gregs[17],
+        uc->uc_mcontext.gregs[14],
+        uc->uc_mcontext.gregs[15],
+        uc->uc_mcontext.gregs[3],
+        uc->uc_mcontext.gregs[2],
+        uc->uc_mcontext.gregs[1],
+        uc->uc_mcontext.gregs[0]
+    );
+    logStackContent((void**)uc->uc_mcontext.gregs[7]);
 #elif defined(__X86_64__) || defined(__x86_64__)
     redisLog(REDIS_WARNING,
     "\n"