From dea470cca449120adc70592d2e934afd79c89c06 Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 28 Jun 2007 14:22:30 +0000 Subject: debug environment variable refined. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- main.c | 16 ++++++++++++++-- signal.c | 10 ++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/main.c b/main.c index 80a155fb0c..82144b7c5a 100644 --- a/main.c +++ b/main.c @@ -29,9 +29,21 @@ objcdummyfunction(void) int main(int argc, char **argv, char **envp) { -#ifdef RUBY_GC_STRESS +#ifdef RUBY_DEBUG_ENV RUBY_EXTERN int gc_stress; - gc_stress = getenv("RUBY_GC_STRESS") != NULL; + RUBY_EXTERN int enable_coredump; + char *str; + str = getenv("RUBY_DEBUG"); + if (str) { + for (str = strtok(str, ","); str; str = strtok(NULL, ",")) { + if (strcmp(str, "gc_stress") == 0) + gc_stress = 1; + else if (strcmp(str, "core") == 0) + enable_coredump = 1; + else + fprintf(stderr, "unexpected debug option: %s\n", str); + } + } #endif #ifdef _WIN32 NtInitialize(&argc, &argv); diff --git a/signal.c b/signal.c index e495f6211f..1db4dbb32a 100644 --- a/signal.c +++ b/signal.c @@ -993,6 +993,10 @@ init_sigchld(int sig) #endif } +#ifdef RUBY_DEBUG_ENV +int enable_coredump = 0; +#endif + /* * Many operating systems allow signals to be sent to running * processes. Some signals have a defined effect on the process, while @@ -1065,12 +1069,18 @@ Init_signal(void) install_sighandler(SIGUSR2, sighandler); #endif +#ifdef RUBY_DEBUG_ENV + if (!enable_coredump) { +#endif #ifdef SIGBUS install_sighandler(SIGBUS, sigbus); #endif #ifdef SIGSEGV install_sighandler(SIGSEGV, sigsegv); #endif +#ifdef RUBY_DEBUG_ENV + } +#endif #ifdef SIGPIPE install_sighandler(SIGPIPE, sigpipe); #endif -- cgit v1.2.3