comparison doodle/core/backtrace.d @ 66:43cc2135ced0

Some code cleanups
author "David Bryant <bagnose@gmail.com>"
date Thu, 12 Aug 2010 22:43:42 +0930
parents dfa1e219eafe
children 100dd23c7bdf
comparison
equal deleted inserted replaced
65:b4676efb884a 66:43cc2135ced0
22 22
23 extern (C) int backtrace(void**, size_t); 23 extern (C) int backtrace(void**, size_t);
24 extern (C) char** backtrace_symbols(void**, int); 24 extern (C) char** backtrace_symbols(void**, int);
25 25
26 // signal handler for otherwise-fatal thread-specific signals 26 // signal handler for otherwise-fatal thread-specific signals
27 extern (C) void signal_handler(int sig) { 27 extern (C) void signalHandler(int sig) {
28 string name() { 28 string name() {
29 switch (sig) { 29 switch (sig) {
30 case SIGSEGV: return "SIGSEGV"; 30 case SIGSEGV: return "SIGSEGV";
31 case SIGFPE: return "SIGFPE"; 31 case SIGFPE: return "SIGFPE";
32 case SIGILL: return "SIGILL"; 32 case SIGILL: return "SIGILL";
38 throw new Error(format("Got signal %s %s", sig, name)); 38 throw new Error(format("Got signal %s %s", sig, name));
39 } 39 }
40 40
41 shared static this() { 41 shared static this() {
42 // set up shared signal handlers for fatal thread-specific signals 42 // set up shared signal handlers for fatal thread-specific signals
43 signal(SIGABRT, &signal_handler); 43 signal(SIGABRT, &signalHandler);
44 signal(SIGFPE, &signal_handler); 44 signal(SIGFPE, &signalHandler);
45 signal(SIGILL, &signal_handler); 45 signal(SIGILL, &signalHandler);
46 signal(SIGSEGV, &signal_handler); 46 signal(SIGSEGV, &signalHandler);
47 } 47 }
48 48
49 static this() { 49 static this() {
50 // register our trace handler for each thread 50 // register our trace handler for each thread
51 Runtime.traceHandler = &traceHandler; 51 Runtime.traceHandler = &traceHandler;