Ruby: debug.c File Reference

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

Data Structures | Macros | Functions | Variables
debug.c File Reference
`#include "ruby/internal/config.h"`
`#include <stdio.h>`
`#include "eval_intern.h"`
`#include "id.h"`
`#include "internal/signal.h"`
`#include "internal/util.h"`
`#include "ruby/encoding.h"`
`#include "ruby/io.h"`
`#include "ruby/ruby.h"`
`#include "ruby/util.h"`
`#include "symbol.h"`
`#include "vm_core.h"`
`#include "vm_debug.h"`
`#include "vm_callinfo.h"`
`#include "ruby/thread_native.h"`
`#include "ractor_core.h"`
`#include "gc.h"`

Go to the source code of this file.

## Data Structures
struct | RIMemo

## Macros
#define | SET_WHEN(name, var, val)
#define | NAME_MATCH_VALUE(name)
#define | SET_UINT(val)
#define | SET_UINT_LIST(name, vals, num)
#define | SET_WHEN_UINT(name, vals, num, req) if (NAME_MATCH_VALUE(name)) SET_UINT_LIST(name, vals, num);
#define | setup_debug_log()

## Functions
int | ruby_debug_print_indent (int level, int debug_level, int indent_level)
void | ruby_debug_printf (const char *format,...)
VALUE | ruby_debug_print_value (int level, int debug_level, const char *header, VALUE obj)
void | ruby_debug_print_v (VALUE v)
ID | ruby_debug_print_id (int level, int debug_level, const char *header, ID id)
NODE * | ruby_debug_print_node (int level, int debug_level, const char *header, const NODE *node)
void | ruby_debug_breakpoint (void)
int | ruby_env_debug_option (const char *str, int len, void *arg)
void | ruby_set_debug_option (const char *str)

## Variables
union {
enum | { RUBY_FMODE_READABLE = FMODE_READABLE , RUBY_FMODE_WRITABLE = FMODE_WRITABLE , RUBY_FMODE_READWRITE = FMODE_READWRITE , RUBY_FMODE_BINMODE = FMODE_BINMODE , RUBY_FMODE_SYNC = FMODE_SYNC , RUBY_FMODE_TTY = FMODE_TTY , RUBY_FMODE_DUPLEX = FMODE_DUPLEX , RUBY_FMODE_APPEND = FMODE_APPEND , RUBY_FMODE_CREATE = FMODE_CREATE , RUBY_FMODE_NOREVLOOKUP = 0x00000100 , RUBY_FMODE_TRUNC = FMODE_TRUNC , RUBY_FMODE_TEXTMODE = FMODE_TEXTMODE , RUBY_FMODE_PREP = 0x00010000 , RUBY_FMODE_SETENC_BY_BOM = FMODE_SETENC_BY_BOM , RUBY_FMODE_UNIX = 0x00200000 , RUBY_FMODE_INET = 0x00400000 , RUBY_FMODE_INET6 = 0x00800000 , RUBY_NODE_TYPESHIFT = NODE_TYPESHIFT , RUBY_NODE_TYPEMASK = NODE_TYPEMASK , RUBY_NODE_LSHIFT = NODE_LSHIFT , RUBY_NODE_FL_NEWLINE = NODE_FL_NEWLINE }
enum ruby_special_consts special_consts
enum ruby_value_type value_type
enum ruby_tag_type tag_type
enum node_type node_type
enum ruby_method_ids method_ids
enum ruby_id_types id_types
enum ruby_fl_type fl_types
enum ruby_fl_ushift fl_ushift
enum ruby_encoding_consts encoding_consts
enum ruby_coderange_type enc_coderange_types
enum ruby_econv_flag_type econv_flag_types
rb_econv_result_t econv_result
enum ruby_robject_flags robject_flags
enum ruby_robject_consts robject_consts
enum ruby_rmodule_flags rmodule_flags
enum ruby_rstring_flags rstring_flags
enum ruby_rstring_consts rstring_consts
enum ruby_rarray_flags rarray_flags
enum ruby_rarray_consts rarray_consts
enum { ... } various
union {
enum | { RUBY_IMEMO_MASK = IMEMO_MASK }
enum imemo_type types
enum { ... } mask
struct RIMemo * ptr
} imemo
struct RSymbol * symbol_ptr
enum vm_call_flag_bits vm_call_flags
} | ruby_dummy_gdb_enums
const SIGNED_VALUE | RUBY_NODE_LMASK = NODE_LMASK
int | ruby_rgengc_debug
int | ruby_on_ci

## Macro Definition Documentation

## ◆ NAME_MATCH_VALUE

#define NAME_MATCH_VALUE | ( |  | name | ) |

Value:
((size_t)len >= sizeof(name)-1 && \
strncmp(str, (name), sizeof(name)-1) == 0 && \
((len == sizeof(name)-1 && !(len = 0)) || \
(str[sizeof(name)-1] == '=' && \
(str += sizeof(name), len -= sizeof(name), 1))))
len
uint8_t len
Definition: escape.c:17
str
char str[HTML_ESCAPE_MAX_LEN+1]
Definition: escape.c:18
name
const char * name
Definition: nkf.c:208

## ◆ SET_UINT

#define SET_UINT | ( |  | val | ) |

Value:
do { \
n = ruby_scan_digits(str, len, 10, &retlen, &ov); \
if (!ov && retlen) { \
val = (unsigned int)n; \
} \
str += retlen; \
len -= retlen; \
} while (0)
ruby_scan_digits
unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow)
Definition: util.c:101
int
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque

## ◆ SET_UINT_LIST

#define SET_UINT_LIST | ( |  | name,
|  |  | vals,
|  |  | num
| ) |  |

Value:
do { \
int i; \
for (i = 0; i < (num); ++i) { \
SET_UINT((vals)[i]); \
if (!len || *str != ':') break; \
++str; \
--len; \
} \
if (len > 0) { \
fprintf(stderr, "ignored "name" option: `%.*s'\n", len, str); \
} \
} while (0)
num
big_t * num
Definition: enough.c:232
if
if((ID)(DISPID) nameid !=nameid)
Definition: win32ole.c:357

## ◆ SET_WHEN

#define SET_WHEN | ( |  | name,
|  |  | var,
|  |  | val
| ) |  |

Value:
do { \
if (len == sizeof(name) - 1 && \
strncmp(str, (name), len) == 0) { \
(var) = (val); \
return 1; \
} \
} while (0)

## ◆ SET_WHEN_UINT

#define SET_WHEN_UINT | ( |  | name,
|  |  | vals,
|  |  | num,
|  |  | req
| ) |  | if (NAME_MATCH_VALUE(name)) SET_UINT_LIST(name, vals, num);

## ◆ setup_debug_log

#define setup_debug_log | ( |  | ) |

Definition at line 255 of file debug.c.

## Function Documentation

## ◆ ruby_debug_breakpoint()

void ruby_debug_breakpoint | ( | void |  | ) |

Definition at line 158 of file debug.c.

## ◆ ruby_debug_print_id()

ID ruby_debug_print_id | ( | int | level,
|  | int | debug_level,
|  | const char * | header,
|  | ID | id
| ) |  |

Definition at line 138 of file debug.c.

References id, and rb_id2name().

## ◆ ruby_debug_print_indent()

int ruby_debug_print_indent | ( | int | level,
|  | int | debug_level,
|  | int | indent_level
| ) |  |

Definition at line 97 of file debug.c.

References FALSE, and TRUE.

## ◆ ruby_debug_print_node()

NODE * ruby_debug_print_node | ( | int | level,
|  | int | debug_level,
|  | const char * | header,
|  | const NODE * | node
| ) |  |

Definition at line 148 of file debug.c.

References nd_line, nd_type, and ruby_node_name().

## ◆ ruby_debug_print_v()

void ruby_debug_print_v | ( | VALUE | v | ) |

Definition at line 132 of file debug.c.

References ruby_debug_print_value().

## ◆ ruby_debug_print_value()

VALUE ruby_debug_print_value | ( | int | level,
|  | int | debug_level,
|  | const char * | header,
|  | VALUE | obj
| ) |  |

Definition at line 119 of file debug.c.

References rb_raw_obj_info().

Referenced by ruby_debug_print_v().

## ◆ ruby_debug_printf()

void ruby_debug_printf | ( | const char * | format,
|  |  | ...
| ) |  |

Definition at line 108 of file debug.c.

## ◆ ruby_env_debug_option()

int ruby_env_debug_option | ( | const char * | str,
|  | int | len,
|  | void * | arg
| ) |  |

Definition at line 176 of file debug.c.

References len, NAME_MATCH_VALUE, numberof, Qtrue, ruby_enable_coredump, ruby_initial_gc_stress_ptr, ruby_on_ci, ruby_rgengc_debug, SET_UINT_LIST, and SET_WHEN.

## ◆ ruby_set_debug_option()

void ruby_set_debug_option | ( | const char * | str | ) |

Definition at line 259 of file debug.c.

References ruby_each_words(), setup_debug_log, and str.

Referenced by main().

## Variable Documentation

## ◆ econv_flag_types

enum ruby_econv_flag_type econv_flag_types

Definition at line 52 of file debug.c.

## ◆ econv_result

rb_econv_result_t econv_result

Definition at line 53 of file debug.c.

## ◆ enc_coderange_types

enum ruby_coderange_type enc_coderange_types

Definition at line 51 of file debug.c.

## ◆ encoding_consts

enum ruby_encoding_consts encoding_consts

Definition at line 50 of file debug.c.

## ◆ fl_types

enum ruby_fl_type fl_types

Definition at line 48 of file debug.c.

## ◆ fl_ushift

enum ruby_fl_ushift fl_ushift

Definition at line 49 of file debug.c.

## ◆ id_types

enum ruby_id_types id_types

Definition at line 47 of file debug.c.

Referenced by rb_id_attrset().

## ◆

union { ... } imemo

Referenced by rb_alloc_tmp_buffer_with_count().

## ◆

enum { ... } mask

Referenced by ffi_prep_closure_loc(), inflate_table(), inflate_table9(), log_last(), lunpipe(), ole_methods_from_typeinfo(), rb_big_pow(), rb_execarg_run_options(), and rb_warning_category_update().

## ◆ method_ids

enum ruby_method_ids method_ids

Definition at line 46 of file debug.c.

## ◆ node_type

enum node_type node_type

Definition at line 45 of file debug.c.

## ◆ ptr

struct RIMemo* ptr

Definition at line 88 of file debug.c.

Referenced by ffi_closure_call_SYSV(), ffi_closure_eabi(), ffi_closure_helper_SYSV(), ffi_closure_SYSV(), ffi_java_ptrarray_to_raw(), ffi_prep_args(), ffi_prep_args_SYSV(), ffi_prep_cif_core(), ffi_prep_cif_machdep(), ffi_ptrarray_to_raw(), ffi_raw_to_ptrarray(), ffi_v9_layout_struct(), ossl_asn1_get_asn1type(), ossl_bn_value_ptr(), ossl_generate_cb_stop(), ossl_pkey_check_public_key(), ossl_str_new(), PACKED_STRUCT_UNALIGNED(), random_mark(), rb_alloc_tmp_buffer_with_count(), rb_ary_cancel_sharing(), rb_ary_delete_at(), rb_ary_push(), rb_ary_rotate(), rb_ary_shift(), rb_ary_sort_bang(), rb_check_id_cstr(), rb_check_symbol_cstr(), rb_ec_get_errinfo(), rb_enc_interned_str(), rb_enc_interned_str_cstr(), rb_enc_str_buf_cat(), rb_enc_str_new(), rb_enc_str_new_cstr(), rb_enc_str_new_static(), rb_exc_new(), rb_external_str_new(), rb_external_str_new_cstr(), rb_external_str_new_with_enc(), rb_fiddle_free(), rb_filesystem_str_new(), rb_filesystem_str_new_cstr(), rb_free_tmp_buffer(), rb_fstring_cstr(), rb_fstring_enc_new(), rb_fstring_new(), rb_gc_mark(), rb_gc_mark_movable(), rb_gc_unprotect_logging(), rb_gc_update_tbl_refs(), rb_hash_keys(), rb_hash_values(), rb_interned_str(), rb_interned_str_cstr(), rb_io_fptr_finalize_internal(), rb_iseq_ibf_dump(), rb_ivar_lookup(), rb_locale_str_new(), rb_locale_str_new_cstr(), rb_memhash(), rb_memory_view_extract_item_member(), rb_memory_view_extract_item_members(), rb_memory_view_get_item(), rb_memory_view_get_item_pointer(), rb_nmin_run(), rb_obj_copy_ivar(), rb_objspace_data_type_memsize(), rb_parser_calloc(), rb_parser_free(), rb_parser_malloc(), rb_parser_realloc(), rb_ractor_local_storage_ptr_set(), rb_ractor_receive_parameters(), rb_rand_bytes_int32(), rb_raw_obj_info(), rb_reg_prepare_re0(), rb_reg_start_with_p(), rb_str_buf_cat_ascii(), rb_str_buf_new_cstr(), rb_str_cat(), rb_str_cat_conv_enc_opts(), rb_str_cat_cstr(), rb_str_conv_enc_opts(), rb_str_drop_bytes(), rb_str_end_with_asciichar(), rb_str_initialize(), rb_str_new(), rb_str_new_cstr(), rb_str_new_static(), rb_str_new_with_class(), rb_str_quote_unprintable(), rb_str_resize(), rb_str_symname_p(), rb_string_value(), rb_string_value_cstr(), rb_string_value_ptr(), rb_sym_intern(), rb_sym_intern_ascii(), rb_sym_intern_ascii_cstr(), rb_tainted_str_new(), rb_tainted_str_new_cstr(), rb_thread_wait_for_single_fd(), rb_usascii_str_new(), rb_usascii_str_new_cstr(), rb_usascii_str_new_static(), rb_utf8_str_new(), rb_utf8_str_new_cstr(), rb_utf8_str_new_static(), rb_vm_each_stack_value(), rb_vm_mark(), rb_vm_update_references(), rb_w32_conv_from_wstr(), rb_w32_mbstr_to_wstr(), rb_w32_write_console(), rb_w32_wstr_to_mbstr(), ReadFileMemory(), RUBY_ALIAS_FUNCTION(), ruby_mimfree(), ruby_sized_xrealloc(), ruby_sized_xrealloc2(), ruby_xrealloc(), ruby_xrealloc2(), ruby_xrealloc2_body(), ruby_xrealloc_body(), st_hash(), VpMemRealloc(), and zcfree().

## ◆ rarray_consts

enum ruby_rarray_consts rarray_consts

Definition at line 60 of file debug.c.

## ◆ rarray_flags

enum ruby_rarray_flags rarray_flags

Definition at line 59 of file debug.c.

## ◆ rmodule_flags

enum ruby_rmodule_flags rmodule_flags

Definition at line 56 of file debug.c.

## ◆ robject_consts

enum ruby_robject_consts robject_consts

Definition at line 55 of file debug.c.

## ◆ robject_flags

enum ruby_robject_flags robject_flags

Definition at line 54 of file debug.c.

## ◆ rstring_consts

enum ruby_rstring_consts rstring_consts

Definition at line 58 of file debug.c.

## ◆ rstring_flags

enum ruby_rstring_flags rstring_flags

Definition at line 57 of file debug.c.

## ◆

const union { ... } ruby_dummy_gdb_enums

## ◆ RUBY_NODE_LMASK

const SIGNED_VALUE RUBY_NODE_LMASK = NODE_LMASK

Definition at line 94 of file debug.c.

## ◆ ruby_on_ci

int ruby_on_ci
| extern

Definition at line 47 of file vm_dump.c.

Referenced by ruby_env_debug_option().

## ◆ ruby_rgengc_debug

int ruby_rgengc_debug
| extern

Definition at line 383 of file gc.c.

Referenced by ruby_env_debug_option().

## ◆ special_consts

enum ruby_special_consts special_consts

Definition at line 42 of file debug.c.

## ◆ symbol_ptr

struct RSymbol* symbol_ptr

Definition at line 90 of file debug.c.

## ◆ tag_type

enum ruby_tag_type tag_type

Definition at line 44 of file debug.c.

## ◆ types

enum imemo_type types

Definition at line 86 of file debug.c.

Referenced by rb_insn_operand_intern(), rb_iseq_disasm_insn(), and rb_iseq_mark_insn_storage().

## ◆ value_type

enum ruby_value_type value_type

Definition at line 43 of file debug.c.

## ◆

enum { ... } various

## ◆ vm_call_flags

enum vm_call_flag_bits vm_call_flags

Definition at line 91 of file debug.c.