parrotcode: Parrot debugging | |
Contents | C |
src/debug.c - Parrot debugging
This file implements Parrot debugging and is used by pdb
,
the Parrot debugger,
and the debug
ops.
static char *nextarg(char *command)
na()
,
above,
which is intended for debugger commands.
This function is used for eval
.static const char *skip_ws(const char *str)
static const char *skip_command(const char *str)
na()
macro above.)static const char *parse_int(const char *str, int *intP)
int
out of a string and return a pointer to just after the int
.static const char *parse_string(Interp *interp, const char *str, STRING** strP)
STRING
.static const char *parse_key(Interp *interp, const char *str, PMC** keyP)
static const char *parse_command(const char *command, unsigned long *cmdP)
void PDB_get_command(Interp *interp)
pdb->last_command
),
so it first frees the old one and updates it with the current one.pdb->cur_command
.void PDB_run_command(Interp *interp, const char *command)
void PDB_next(Interp *interp, const char *command)
void PDB_trace(Interp *interp, const char *command)
PDB_condition_t *PDB_cond(Interp *interp, const char *command)
void PDB_watchpoint(Interp *interp, const char *command)
void PDB_set_break(Interp *interp, const char *command)
void PDB_init(Interp *interp, const char *command)
void PDB_continue(Interp *interp, const char *command)
PDB_breakpoint_t *PDB_find_breakpoint(Interp *interp, const char *command)
NULL
if the breakpoint doesn't exist or if no breakpoint was specified.void PDB_disable_breakpoint(Interp *interp, const char *command)
void PDB_enable_breakpoint(Interp *interp, const char *command)
void PDB_delete_breakpoint(Interp *interp, const char *command)
void PDB_delete_condition(Interp *interp, PDB_breakpoint_t *breakpoint)
void PDB_skip_breakpoint(Interp *interp, long i)
i
times all breakpoints.char PDB_program_end(Interp *interp)
char PDB_check_condition(Interp *interp, PDB_condition_t *condition)
char PDB_break(Interp *interp)
char *PDB_escape(const char *string, INTVAL length)
"
,
\r
,
\n
,
\t
,
\a
and \\
.int PDB_unescape(char *string)
\r
,
\n
,
\t
,
\a
and \\
.size_t PDB_disassemble_op(Interp *interp, char *dest, int space, op_info_t *info, opcode_t *op, PDB_file_t *file, opcode_t *code_start, int full_name)
op
.void PDB_disassemble(Interp *interp, const char *command)
long PDB_add_label(PDB_file_t *file, opcode_t *cur_opcode, opcode_t offset)
void PDB_free_file(Interp *interp)
void PDB_load_source(Interp *interp, const char *command)
char PDB_hasinstruction(char *c)
void PDB_list(Interp *interp, const char *command)
void PDB_eval(Interp *interp, const char *command)
eval
s an instruction.struct PackFile *PDB_compile(Interp *interp, const char *command)
end
op.PDB_eval
above or from the compile opcode which generates a malloced string.int PDB_extend_const_table(Interp *interp)
static void dump_string(Interp *interp, STRING *s)
void PDB_print_user_stack(Interp *interp, const char *command)
void PDB_print(Interp *interp, const char *command)
void PDB_info(Interp *interp)
void PDB_help(Interp *interp, const char *command)
void PDB_backtrace(Interp *interp)
include/parrot/debug.h, src/pdb.c and ops/debug.ops.
debug_interp->pdb->debugee->debugger
^ |
| v
+------------- := -----------+
debugger
. User code runs of course in the debugee
.
|