Add a way to print debug counters without exiting

I am trying to study debug counters inside a Rails application.
Accessing debug counters by killing the process is hard because child
processes don't get the same TRAP as the parent, and Rails seems to
intercept calls to `exit`.  Adding this method lets me print the debug
counters when I want (at the end of requests for example)
This commit is contained in:
Aaron Patterson 2019-08-06 12:23:30 -07:00
Родитель 2f3795113d
Коммит 70fd099220
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 953170BCB4FFAFC6
3 изменённых файлов: 9 добавлений и 0 удалений

Просмотреть файл

@ -43,6 +43,13 @@ rb_debug_counter_show_results(const char *msg)
}
}
VALUE
rb_debug_counter_show(void)
{
rb_debug_counter_show_results("method call");
return Qnil;
}
VALUE
rb_debug_counter_reset(void)
{

Просмотреть файл

@ -350,6 +350,7 @@ rb_debug_counter_add(enum rb_debug_counter_type type, int add, int cond)
}
VALUE rb_debug_counter_reset(void);
VALUE rb_debug_counter_show(void);
#define RB_DEBUG_COUNTER_INC(type) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, 1)
#define RB_DEBUG_COUNTER_INC_UNLESS(type, cond) (!rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, !(cond)))

1
vm.c
Просмотреть файл

@ -2916,6 +2916,7 @@ Init_VM(void)
rb_define_singleton_method(rb_cRubyVM, "stat", vm_stat, -1);
#if USE_DEBUG_COUNTER
rb_define_singleton_method(rb_cRubyVM, "reset_debug_counters", rb_debug_counter_reset, 0);
rb_define_singleton_method(rb_cRubyVM, "show_debug_counters", rb_debug_counter_show, 0);
#endif
/* FrozenCore (hidden) */