зеркало из https://github.com/github/ruby.git
ruby.c: debug options in command line
* ruby.c (debug_option): parse options in --debug command line option same as RUBY_DEBUG env. available only in the trunk. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
9cacc53d4a
Коммит
793f5d8fe8
20
debug.c
20
debug.c
|
@ -121,8 +121,8 @@ UINT ruby_w32_codepage[2];
|
|||
#endif
|
||||
extern int ruby_rgengc_debug;
|
||||
|
||||
static void
|
||||
set_debug_option(const char *str, int len, void *arg)
|
||||
int
|
||||
ruby_env_debug_option(const char *str, int len, void *arg)
|
||||
{
|
||||
int ov;
|
||||
size_t retlen;
|
||||
|
@ -131,7 +131,7 @@ set_debug_option(const char *str, int len, void *arg)
|
|||
if (len == sizeof(name) - 1 && \
|
||||
strncmp(str, (name), len) == 0) { \
|
||||
(var) = (val); \
|
||||
return; \
|
||||
return 1; \
|
||||
} \
|
||||
} while (0)
|
||||
#define NAME_MATCH_VALUE(name) \
|
||||
|
@ -168,7 +168,7 @@ set_debug_option(const char *str, int len, void *arg)
|
|||
if (NAME_MATCH_VALUE("rgengc")) {
|
||||
if (!len) ruby_rgengc_debug = 1;
|
||||
else SET_UINT_LIST("rgengc", &ruby_rgengc_debug, 1);
|
||||
return;
|
||||
return 1;
|
||||
}
|
||||
#if defined _WIN32
|
||||
# if RUBY_MSVCRT_VERSION >= 80
|
||||
|
@ -179,10 +179,18 @@ set_debug_option(const char *str, int len, void *arg)
|
|||
if (NAME_MATCH_VALUE("codepage")) {
|
||||
if (!len) fprintf(stderr, "missing codepage argument");
|
||||
else SET_UINT_LIST("codepage", ruby_w32_codepage, numberof(ruby_w32_codepage));
|
||||
return;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
fprintf(stderr, "unexpected debug option: %.*s\n", len, str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
set_debug_option(const char *str, int len, void *arg)
|
||||
{
|
||||
if (!ruby_env_debug_option(str, len, arg)) {
|
||||
fprintf(stderr, "unexpected debug option: %.*s\n", len, str);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
4
ruby.c
4
ruby.c
|
@ -856,12 +856,16 @@ disable_option(const char *str, int len, void *arg)
|
|||
feature_option(str, len, arg, 0U);
|
||||
}
|
||||
|
||||
RUBY_EXTERN const int ruby_patchlevel;
|
||||
int ruby_env_debug_option(const char *str, int len, void *arg);
|
||||
|
||||
static void
|
||||
debug_option(const char *str, int len, void *arg)
|
||||
{
|
||||
static const char list[] = EACH_DEBUG_FEATURES(LITERAL_NAME_ELEMENT, ", ");
|
||||
#define SET_WHEN_DEBUG(bit) SET_WHEN(#bit, DEBUG_BIT(bit), str, len)
|
||||
EACH_DEBUG_FEATURES(SET_WHEN_DEBUG, ;);
|
||||
if (ruby_patchlevel < 0 && ruby_env_debug_option(str, len, 0)) return;
|
||||
rb_warn("unknown argument for --debug: `%.*s'", len, str);
|
||||
rb_warn("debug features are [%.*s].", (int)strlen(list), list);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче