diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-11-13 21:19:43 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-11-13 21:19:43 -0800 |
commit | 1232f5dbf8e68f9c3a7fe77360c0b950ecff3eac (patch) | |
tree | 18cb4ab7caf1d2b42139f98c80691e641a76efdd /txr.c | |
parent | cc0f30f375914382e9e94e5bba26b14b2a734499 (diff) | |
download | txr-1232f5dbf8e68f9c3a7fe77360c0b950ecff3eac.tar.gz txr-1232f5dbf8e68f9c3a7fe77360c0b950ecff3eac.tar.bz2 txr-1232f5dbf8e68f9c3a7fe77360c0b950ecff3eac.zip |
Adding a debugger. This is an experimental prototype.
* Makefile (OBJS): New object file debug.o.
* dep.mk: Updated.
* match.c (h_fun): Use debug_begin and debug_end macros
to set up a debug frame for backtracing.
(match_line, match_files): Call debug_check to give debugger a chance
to instrument call.
(v_fun): Use debug_begin and debug_end macros to set up a debug frame
for backtracing. Call debug_check to give debugger a chance to
instrument call.
* stream.c (struct strm_ops): New function pointer, flush.
(stdio_maybe_write_error): Wrong word in error message corrected.
(stdio_flush): New static function.
(stdio_ops, pipe_ops): New function entered into tables.
(flush_stream): New function.
* stream.h (flush_stream): Declared.
* txr.c (help): New options documented.
(main): call to debug_init added. New debug options parsed and
opt_debugger set accordingly.
* unwind.c (uw_push_debug, uw_current_frame): New function.
* unwind.h (uw_frtype): New enumeration member UW_DBG.
(struct uw_debug): New frame variant.
(union uw_frame): New member, db.
(uw_push_debug, uw_current_frame): Declared,
* debug.c: New file.
* debug.h: New file.
Diffstat (limited to 'txr.c')
-rw-r--r-- | txr.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -40,6 +40,7 @@ #include "parser.h" #include "match.h" #include "utf8.h" +#include "debug.h" #include "txr.h" const wchli_t *version = wli("041"); @@ -91,6 +92,8 @@ static void help(void) "-q Quiet: don't report errors during query matching.\n" "-v Verbose: extra logging from matcher.\n" "-b Don't dump list of bindings.\n" +"-l If dumping bindings, use a Lisp format.\n" +"-d Debugger mode.\n" "-a num Generate array variables up to num-dimensions.\n" " Default is 1. Additional dimensions are fudged\n" " by generating numeric suffixes\n" @@ -103,6 +106,8 @@ static void help(void) " to the utility.\n" "--help You already know!\n" "--version Display program version\n" +"--lisp-bindings Synonym for -l\n" +"--debugger Synonym for -d\n" "\n" "Options that take no argument can be combined. The -q and -v options\n" "are mutually exclusive; the right-most one dominates.\n" @@ -145,6 +150,7 @@ int main(int argc, char **argv) init(progname, oom_realloc_handler, &stack_bottom); match_init(); parse_init(); + debug_init(); return txr_main(argc, argv); } @@ -288,6 +294,10 @@ int txr_main(int argc, char **argv) opt_lisp_bindings = 1; argv++, argc--; continue; + } else if (!strcmp(*argv, "--debugger")) { + opt_debugger = 1; + argv++, argc--; + continue; } @@ -307,6 +317,9 @@ int txr_main(int argc, char **argv) case 'l': opt_lisp_bindings = 1; break; + case 'd': + opt_debugger = 1; + break; case 'a': case 'c': case 'D': |