diff options
author | Koichi Sasada <ko1@atdot.net> | 2020-01-03 04:46:51 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2020-01-03 04:46:51 +0900 |
commit | 9f460e017b341fc8378f00315b0776e300107ccd (patch) | |
tree | c4769a642548b9b77970217c5a7e8c3536635a7c /internal.h | |
parent | 6f5ee1f092414e4d60a403d82a57cf023b38c0b9 (diff) | |
download | ruby-9f460e017b341fc8378f00315b0776e300107ccd.tar.gz |
move internal/debug.h definitions to internal.h
Debug utilities should be accessible from any internal code.
Diffstat (limited to 'internal.h')
-rw-r--r-- | internal.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/internal.h b/internal.h index 7479c73563..4d95fe704e 100644 --- a/internal.h +++ b/internal.h @@ -74,4 +74,28 @@ #define rb_funcallv(...) rb_nonexistent_symbol(__VA_ARGS__) #define rb_method_basic_definition_p(...) rb_nonexistent_symbol(__VA_ARGS__) + +/* MRI debug support */ + +/* gc.c */ +void rb_obj_info_dump(VALUE obj); +void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func); + +/* debug.c */ +void ruby_debug_breakpoint(void); +PRINTF_ARGS(void ruby_debug_printf(const char*, ...), 1, 2); + +// show obj data structure without any side-effect +#define rp(obj) rb_obj_info_dump_loc((VALUE)(obj), __FILE__, __LINE__, __func__) + +// same as rp, but add message header +#define rp_m(msg, obj) do { \ + fprintf(stderr, "%s", (msg)); \ + rb_obj_info_dump((VALUE)obj); \ +} while (0) + +// `ruby_debug_breakpoint()` does nothing, +// but breakpoint is set in run.gdb, so `make gdb` can stop here. +#define bp() ruby_debug_breakpoint() + #endif /* RUBY_INTERNAL_H */ |