1 #ifndef DUK_DEBUGGER_H_INCLUDED
2 #define DUK_DEBUGGER_H_INCLUDED
4 /* Debugger protocol version is defined in the public API header. */
6 #define DUK_DBG_MARKER_EOM 0x00
7 #define DUK_DBG_MARKER_REQUEST 0x01
8 #define DUK_DBG_MARKER_REPLY 0x02
9 #define DUK_DBG_MARKER_ERROR 0x03
10 #define DUK_DBG_MARKER_NOTIFY 0x04
12 #define DUK_DBG_ERR_UNKNOWN 0x00
13 #define DUK_DBG_ERR_UNSUPPORTED 0x01
14 #define DUK_DBG_ERR_TOOMANY 0x02
15 #define DUK_DBG_ERR_NOTFOUND 0x03
17 /* Initiated by Duktape */
18 #define DUK_DBG_CMD_STATUS 0x01
19 #define DUK_DBG_CMD_PRINT 0x02
20 #define DUK_DBG_CMD_ALERT 0x03
21 #define DUK_DBG_CMD_LOG 0x04
23 /* Initiated by debug client */
24 #define DUK_DBG_CMD_BASICINFO 0x10
25 #define DUK_DBG_CMD_TRIGGERSTATUS 0x11
26 #define DUK_DBG_CMD_PAUSE 0x12
27 #define DUK_DBG_CMD_RESUME 0x13
28 #define DUK_DBG_CMD_STEPINTO 0x14
29 #define DUK_DBG_CMD_STEPOVER 0x15
30 #define DUK_DBG_CMD_STEPOUT 0x16
31 #define DUK_DBG_CMD_LISTBREAK 0x17
32 #define DUK_DBG_CMD_ADDBREAK 0x18
33 #define DUK_DBG_CMD_DELBREAK 0x19
34 #define DUK_DBG_CMD_GETVAR 0x1a
35 #define DUK_DBG_CMD_PUTVAR 0x1b
36 #define DUK_DBG_CMD_GETCALLSTACK 0x1c
37 #define DUK_DBG_CMD_GETLOCALS 0x1d
38 #define DUK_DBG_CMD_EVAL 0x1e
39 #define DUK_DBG_CMD_DETACH 0x1f
40 #define DUK_DBG_CMD_DUMPHEAP 0x20
41 #define DUK_DBG_CMD_GETBYTECODE 0x21
43 #if defined(DUK_USE_DEBUGGER_SUPPORT)
44 DUK_INTERNAL_DECL
void duk_debug_do_detach(duk_heap
*heap
);
46 DUK_INTERNAL_DECL duk_bool_t
duk_debug_read_peek(duk_hthread
*thr
);
47 DUK_INTERNAL_DECL
void duk_debug_write_flush(duk_hthread
*thr
);
49 DUK_INTERNAL_DECL
void duk_debug_skip_bytes(duk_hthread
*thr
, duk_size_t length
);
50 DUK_INTERNAL_DECL
void duk_debug_skip_byte(duk_hthread
*thr
);
52 DUK_INTERNAL_DECL
void duk_debug_read_bytes(duk_hthread
*thr
, duk_uint8_t
*data
, duk_size_t length
);
53 DUK_INTERNAL_DECL duk_uint8_t
duk_debug_read_byte(duk_hthread
*thr
);
54 DUK_INTERNAL_DECL duk_int32_t
duk_debug_read_int(duk_hthread
*thr
);
55 DUK_INTERNAL_DECL duk_hstring
*duk_debug_read_hstring(duk_hthread
*thr
);
56 /* XXX: exposed duk_debug_read_pointer */
57 /* XXX: exposed duk_debug_read_buffer */
58 /* XXX: exposed duk_debug_read_hbuffer */
59 DUK_INTERNAL_DECL
void duk_debug_read_tval(duk_hthread
*thr
);
61 DUK_INTERNAL_DECL
void duk_debug_write_bytes(duk_hthread
*thr
, const duk_uint8_t
*data
, duk_size_t length
);
62 DUK_INTERNAL_DECL
void duk_debug_write_byte(duk_hthread
*thr
, duk_uint8_t x
);
63 DUK_INTERNAL_DECL
void duk_debug_write_unused(duk_hthread
*thr
);
64 DUK_INTERNAL_DECL
void duk_debug_write_undefined(duk_hthread
*thr
);
65 DUK_INTERNAL_DECL
void duk_debug_write_int(duk_hthread
*thr
, duk_int32_t x
);
66 DUK_INTERNAL_DECL
void duk_debug_write_uint(duk_hthread
*thr
, duk_uint32_t x
);
67 DUK_INTERNAL_DECL
void duk_debug_write_string(duk_hthread
*thr
, const char *data
, duk_size_t length
);
68 DUK_INTERNAL_DECL
void duk_debug_write_cstring(duk_hthread
*thr
, const char *data
);
69 DUK_INTERNAL_DECL
void duk_debug_write_hstring(duk_hthread
*thr
, duk_hstring
*h
);
70 DUK_INTERNAL_DECL
void duk_debug_write_buffer(duk_hthread
*thr
, const char *data
, duk_size_t length
);
71 DUK_INTERNAL_DECL
void duk_debug_write_hbuffer(duk_hthread
*thr
, duk_hbuffer
*h
);
72 DUK_INTERNAL_DECL
void duk_debug_write_pointer(duk_hthread
*thr
, const void *ptr
);
73 #if defined(DUK_USE_DEBUGGER_DUMPHEAP)
74 DUK_INTERNAL_DECL
void duk_debug_write_heapptr(duk_hthread
*thr
, duk_heaphdr
*h
);
76 DUK_INTERNAL_DECL
void duk_debug_write_hobject(duk_hthread
*thr
, duk_hobject
*obj
);
77 DUK_INTERNAL_DECL
void duk_debug_write_tval(duk_hthread
*thr
, duk_tval
*tv
);
80 DUK_INTERNAL_DECL
void duk_debug_write_request(duk_hthread
*thr
, duk_small_uint_t command
);
82 DUK_INTERNAL_DECL
void duk_debug_write_reply(duk_hthread
*thr
);
83 DUK_INTERNAL_DECL
void duk_debug_write_error_eom(duk_hthread
*thr
, duk_small_uint_t err_code
, const char *msg
);
84 DUK_INTERNAL_DECL
void duk_debug_write_notify(duk_hthread
*thr
, duk_small_uint_t command
);
85 DUK_INTERNAL_DECL
void duk_debug_write_eom(duk_hthread
*thr
);
87 DUK_INTERNAL duk_uint_fast32_t
duk_debug_curr_line(duk_hthread
*thr
);
88 DUK_INTERNAL
void duk_debug_send_status(duk_hthread
*thr
);
90 DUK_INTERNAL_DECL duk_bool_t
duk_debug_process_messages(duk_hthread
*thr
, duk_bool_t no_block
);
92 DUK_INTERNAL_DECL duk_small_int_t
duk_debug_add_breakpoint(duk_hthread
*thr
, duk_hstring
*filename
, duk_uint32_t line
);
93 DUK_INTERNAL_DECL duk_bool_t
duk_debug_remove_breakpoint(duk_hthread
*thr
, duk_small_uint_t breakpoint_index
);
96 #endif /* DUK_DEBUGGER_H_INCLUDED */