Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
duk_api_debug.c File Reference
#include "duk_internal.h"

Go to the source code of this file.

Functions

DUK_EXTERNAL void duk_push_context_dump (duk_context *ctx)
 
DUK_EXTERNAL void duk_debugger_attach_custom (duk_context *ctx, duk_debug_read_function read_cb, duk_debug_write_function write_cb, duk_debug_peek_function peek_cb, duk_debug_read_flush_function read_flush_cb, duk_debug_write_flush_function write_flush_cb, duk_debug_request_function request_cb, duk_debug_detached_function detached_cb, void *udata)
 
DUK_EXTERNAL void duk_debugger_detach (duk_context *ctx)
 
DUK_EXTERNAL void duk_debugger_cooperate (duk_context *ctx)
 
DUK_EXTERNAL duk_bool_t duk_debugger_notify (duk_context *ctx, duk_idx_t nvalues)
 
DUK_EXTERNAL void duk_debugger_pause (duk_context *ctx)
 

Function Documentation

◆ duk_debugger_attach_custom()

DUK_EXTERNAL void duk_debugger_attach_custom ( duk_context * ctx,
duk_debug_read_function read_cb,
duk_debug_write_function write_cb,
duk_debug_peek_function peek_cb,
duk_debug_read_flush_function read_flush_cb,
duk_debug_write_flush_function write_flush_cb,
duk_debug_request_function request_cb,
duk_debug_detached_function detached_cb,
void * udata )

Definition at line 209 of file duktape-1.8.0/src-separate/duk_api_debug.c.

217 {
219 DUK_UNREF(read_cb);
220 DUK_UNREF(write_cb);
221 DUK_UNREF(peek_cb);
222 DUK_UNREF(read_flush_cb);
223 DUK_UNREF(write_flush_cb);
224 DUK_UNREF(request_cb);
225 DUK_UNREF(detached_cb);
226 DUK_UNREF(udata);
227 DUK_ERROR_API((duk_hthread *) ctx, "no debugger support");
228}
#define DUK_ASSERT_CTX_VALID(ctx)
#define DUK_ERROR_API(thr, msg)

References DUK_ASSERT_CTX_VALID, DUK_ERROR_API, and DUK_UNREF.

◆ duk_debugger_cooperate()

DUK_EXTERNAL void duk_debugger_cooperate ( duk_context * ctx)

Definition at line 235 of file duktape-1.8.0/src-separate/duk_api_debug.c.

235 {
236 /* nop */
238 DUK_UNREF(ctx);
239}

References DUK_ASSERT_CTX_VALID, and DUK_UNREF.

◆ duk_debugger_detach()

DUK_EXTERNAL void duk_debugger_detach ( duk_context * ctx)

Definition at line 230 of file duktape-1.8.0/src-separate/duk_api_debug.c.

230 {
232 DUK_ERROR_API((duk_hthread *) ctx, "no debugger support");
233}

References DUK_ASSERT_CTX_VALID, and DUK_ERROR_API.

◆ duk_debugger_notify()

DUK_EXTERNAL duk_bool_t duk_debugger_notify ( duk_context * ctx,
duk_idx_t nvalues )

Definition at line 241 of file duktape-1.8.0/src-separate/duk_api_debug.c.

241 {
242 duk_idx_t top;
243
245
246 top = duk_get_top(ctx);
247 if (top < nvalues) {
248 DUK_ERROR_API((duk_hthread *) ctx, "not enough stack values for notify");
249 return 0; /* unreachable */
250 }
251
252 /* No debugger support, just pop values. */
253 duk_pop_n(ctx, nvalues);
254 return 0;
255}
DUK_EXTERNAL duk_idx_t duk_get_top(duk_context *ctx)
DUK_EXTERNAL void duk_pop_n(duk_context *ctx, duk_idx_t count)

References DUK_ASSERT_CTX_VALID, DUK_ERROR_API, duk_get_top(), and duk_pop_n().

◆ duk_debugger_pause()

DUK_EXTERNAL void duk_debugger_pause ( duk_context * ctx)

Definition at line 257 of file duktape-1.8.0/src-separate/duk_api_debug.c.

257 {
258 /* Treat like debugger statement: nop */
260 DUK_UNREF(ctx);
261}

References DUK_ASSERT_CTX_VALID, and DUK_UNREF.

◆ duk_push_context_dump()

DUK_EXTERNAL void duk_push_context_dump ( duk_context * ctx)

Definition at line 7 of file duktape-1.8.0/src-separate/duk_api_debug.c.

7 {
8 duk_idx_t idx;
9 duk_idx_t top;
10
12
13 /* We don't duk_require_stack() here now, but rely on the caller having
14 * enough space.
15 */
16
17 top = duk_get_top(ctx);
18 duk_push_array(ctx);
19 for (idx = 0; idx < top; idx++) {
20 duk_dup(ctx, idx);
21 duk_put_prop_index(ctx, -2, idx);
22 }
23
24 /* XXX: conversion errors should not propagate outwards.
25 * Perhaps values need to be coerced individually?
26 */
28 duk_get_top_index(ctx), /*idx_value*/
29 DUK_INVALID_INDEX, /*idx_replacer*/
30 DUK_INVALID_INDEX, /*idx_space*/
34
35 duk_push_sprintf(ctx, "ctx: top=%ld, stack=%s", (long) top, (const char *) duk_safe_to_string(ctx, -1));
36 duk_replace(ctx, -3); /* [ ... arr jsonx(arr) res ] -> [ ... res jsonx(arr) ] */
37 duk_pop(ctx);
38 DUK_ASSERT(duk_is_string(ctx, -1));
39}
DUK_EXTERNAL duk_bool_t duk_put_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx)
#define DUK_JSON_FLAG_AVOID_KEY_QUOTES
DUK_INTERNAL_DECL void duk_bi_json_stringify_helper(duk_context *ctx, duk_idx_t idx_value, duk_idx_t idx_replacer, duk_idx_t idx_space, duk_small_uint_t flags)
DUK_EXTERNAL void duk_replace(duk_context *ctx, duk_idx_t to_index)
DUK_EXTERNAL duk_idx_t duk_get_top_index(duk_context *ctx)
DUK_EXTERNAL void duk_dup(duk_context *ctx, duk_idx_t from_index)
#define DUK_JSON_FLAG_EXT_CUSTOM
DUK_EXTERNAL const char * duk_push_sprintf(duk_context *ctx, const char *fmt,...)
DUK_EXTERNAL void duk_pop(duk_context *ctx)
DUK_EXTERNAL duk_idx_t duk_push_array(duk_context *ctx)
DUK_EXTERNAL duk_bool_t duk_is_string(duk_context *ctx, duk_idx_t index)
#define DUK_JSON_FLAG_ASCII_ONLY
#define duk_safe_to_string(ctx, index)

References DUK_ASSERT, DUK_ASSERT_CTX_VALID, duk_bi_json_stringify_helper(), duk_dup(), duk_get_top(), duk_get_top_index(), DUK_INVALID_INDEX, duk_is_string(), DUK_JSON_FLAG_ASCII_ONLY, DUK_JSON_FLAG_AVOID_KEY_QUOTES, DUK_JSON_FLAG_EXT_CUSTOM, duk_pop(), duk_push_array(), duk_push_sprintf(), duk_put_prop_index(), duk_replace(), and duk_safe_to_string.