diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-06-28 14:22:30 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-06-28 14:22:30 +0000 |
commit | dea470cca449120adc70592d2e934afd79c89c06 (patch) | |
tree | 75df6799bb135d5cad46662d121e9aa2de83d5a2 | |
parent | 480c602bdc9ad15c40e093bd1acf9776e3ade5de (diff) | |
download | ruby-dea470cca449120adc70592d2e934afd79c89c06.tar.gz |
debug environment variable refined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | main.c | 16 | ||||
-rw-r--r-- | signal.c | 10 |
2 files changed, 24 insertions, 2 deletions
@@ -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); @@ -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 |