From c9a8bbd7f5308b9d165b0d21ff9b49bcd4fc070e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 6 Aug 2015 22:10:18 -0700 Subject: 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 --- debug.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'debug.c') 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; -- cgit v1.2.3