2 ** @file mruby/debug.h - mruby debug info
4 ** See Copyright Notice in mruby.h
17 typedef enum mrb_debug_line_type {
18 mrb_debug_line_ary = 0,
19 mrb_debug_line_flat_map = 1
20 } mrb_debug_line_type;
22 typedef struct mrb_irep_debug_info_line {
25 } mrb_irep_debug_info_line;
27 typedef struct mrb_irep_debug_info_file {
30 uint32_t line_entry_count;
31 mrb_debug_line_type line_type;
34 mrb_irep_debug_info_line *flat_map;
37 } mrb_irep_debug_info_file;
39 typedef struct mrb_irep_debug_info {
42 mrb_irep_debug_info_file **files;
43 } mrb_irep_debug_info;
46 * get line from irep's debug info and program counter
47 * @return returns NULL if not found
49 MRB_API const char *mrb_debug_get_filename(mrb_state *mrb, mrb_irep *irep, ptrdiff_t pc);
52 * get line from irep's debug info and program counter
53 * @return returns -1 if not found
55 MRB_API int32_t mrb_debug_get_line(mrb_state *mrb, mrb_irep *irep, ptrdiff_t pc);
57 MRB_API mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep);
58 MRB_API mrb_irep_debug_info_file *mrb_debug_info_append_file(
59 mrb_state *mrb, mrb_irep_debug_info *info,
60 const char *filename, uint16_t *lines,
61 uint32_t start_pos, uint32_t end_pos);
62 MRB_API void mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d);
66 #endif /* MRUBY_DEBUG_H */