summaryrefslogtreecommitdiffstats
path: root/debug.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-08-06 22:10:18 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-08-06 22:10:18 -0700
commitc9a8bbd7f5308b9d165b0d21ff9b49bcd4fc070e (patch)
tree8faf588326a83c0d99b050a847e95b9a80dcd8a8 /debug.c
parentf93b24ace00a1800dd9540fa5268ce1c3bb6e61d (diff)
downloadtxr-c9a8bbd7f5308b9d165b0d21ff9b49bcd4fc070e.tar.gz
txr-c9a8bbd7f5308b9d165b0d21ff9b49bcd4fc070e.tar.bz2
txr-c9a8bbd7f5308b9d165b0d21ff9b49bcd4fc070e.zip
Suppress debug stepping into auto-loaded library code.
* debug.c (debug_set_state, debug_restore_state): New functions. * debug.h (debug_state_t): New type. (debug_set_state, debug_restore_state): Declared, and defined as dummy macros in non-debug-support build. * lisplib.c (opt_dbg_autoload): New global variable. (lisplib_try_load): Disable or enable debugging around library loading based on opt_dbg_autoload option. * lisplib.h (opt_dbg_autoload): Declared. * txr.c (help): List --debug-autoload option. (no_dbg_support): New static function to avoid repeated code. (txr_main): Add debugger option. Change duplicate no debug support error messages into calls to no_dbg_support. * txr.1: Document --debug-autoload
Diffstat (limited to 'debug.c')
-rw-r--r--debug.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/debug.c b/debug.c
index 00117558..0fb426b2 100644
--- a/debug.c
+++ b/debug.c
@@ -241,6 +241,20 @@ val debug(val form, val bindings, val data, val line, val pos, val base)
}
}
+debug_state_t debug_set_state(int depth, int step)
+{
+ debug_state_t old = { next_depth, step_mode };
+ next_depth = depth;
+ step_mode = step;
+ return old;
+}
+
+void debug_restore_state(debug_state_t state)
+{
+ next_depth = state.next_depth;
+ step_mode = state.step_mode;
+}
+
void debug_init(void)
{
step_mode = 1;