diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-07-25 12:37:52 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-07-25 12:54:39 +0300 |
commit | 364f4246159b8d338c2fafc70b868ffc83816c2f (patch) | |
tree | d6609a1a066d657df4d7615f55834a29f45c6c6f /tests | |
parent | de7834e96602695db1cb6efd6238398b84d2ca60 (diff) | |
download | gdbm-364f4246159b8d338c2fafc70b868ffc83816c2f.tar.gz gdbm-364f4246159b8d338c2fafc70b868ffc83816c2f.tar.bz2 |
Add debug info.
* configure.ac: Fix description wording.
* src/Makefile.am [GDBM_COND_DEBUG_ENABLE]: Don't
define GDBM_DEBUG_ENABLE.
* tests/Makefile.am: Likewise.
* src/debug.c (gdbm_debug_printer)
(gdbm_debug_flags): New globals.
(gdbm_debug_token, gdbm_debug_parse_state)
(gdbm_debug_datum): New functions.
* src/gdbm.h.in [@GDBM_DEBUG_ENABLE@]: Define GDBM_DEBUG_ENABLE.
(gdbm_debug_printer_t): New typedef.
(gdbm_debug_printer, gdbm_debug_flags): New externs.
(GDBM_DEBUG_ERR,GDBM_DEBUG_OPEN)
(GDBM_DEBUG_READ,GDBM_DEBUG_STORE)
(GDBM_DEBUG_LOOKUP,GDBM_DEBUG_ALL): New defines.
(gdbm_debug_token,gdbm_debug_parse_state)
(gdbm_debug_datum): New protos.
* src/gdbmdefs.h (GDBM_DEBUG,GDBM_DEBUG_DATUM): New macros.
* src/findkey.c: Add debugging info.
* src/gdbmfetch.c: Likewise.
* src/gdbmopen.c: Likewise.
* src/gdbmseq.c: Likewise.
* src/gdbmstore.c: Likewise.
* src/gdbmtool.c (open_handler): Allow the use of ~/
(command) <repeat,variadic>: New members.
(run_command): Handle variadic functions.
(run_last_command): New command. In interactive mode,
repeats the last command if it was marked
with repeat=1 (currently, only "next").
New command: "debug".
(all functions): Use terror instead of fprintf(stderr,...);
* src/gdbmtool.h (handler_param) <vararg>: New member.
(run_last_command): New proto.
* src/gram.y: Call run_last_command) on empty input.
* tests/gtload.c: New option: -debug=
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rw-r--r-- | tests/gtload.c | 33 |
2 files changed, 33 insertions, 4 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index ae6cbb9..2e68e69 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am | |||
@@ -120,10 +120,6 @@ check_PROGRAMS = \ | |||
120 | 120 | ||
121 | AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src $(DBMINCLUDES) | 121 | AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src $(DBMINCLUDES) |
122 | 122 | ||
123 | if GDBM_COND_DEBUG_ENABLE | ||
124 | AM_CPPFLAGS += -DGDBM_DEBUG_ENABLE=1 | ||
125 | endif | ||
126 | |||
127 | noinst_HEADERS=progname.h | 123 | noinst_HEADERS=progname.h |
128 | 124 | ||
129 | LDADD = ../src/libgdbm.la | 125 | LDADD = ../src/libgdbm.la |
diff --git a/tests/gtload.c b/tests/gtload.c index f9f1bb1..10f65c3 100644 --- a/tests/gtload.c +++ b/tests/gtload.c | |||
@@ -120,9 +120,23 @@ install_hook (char *id) | |||
120 | } | 120 | } |
121 | } | 121 | } |
122 | } | 122 | } |
123 | #ifdef GDBM_DEBUG_ENABLE | ||
123 | _gdbm_debug_hook_install (id, hookfn, clos); | 124 | _gdbm_debug_hook_install (id, hookfn, clos); |
125 | #endif | ||
124 | } | 126 | } |
125 | 127 | ||
128 | #ifdef GDBM_DEBUG_ENABLE | ||
129 | void | ||
130 | debug_printer (char const *fmt, ...) | ||
131 | { | ||
132 | va_list ap; | ||
133 | |||
134 | va_start (ap, fmt); | ||
135 | vfprintf (stderr, fmt, ap); | ||
136 | va_end (ap); | ||
137 | } | ||
138 | #endif | ||
139 | |||
126 | int | 140 | int |
127 | main (int argc, char **argv) | 141 | main (int argc, char **argv) |
128 | { | 142 | { |
@@ -146,6 +160,10 @@ main (int argc, char **argv) | |||
146 | int rcvr_flags = 0; | 160 | int rcvr_flags = 0; |
147 | 161 | ||
148 | progname = canonical_progname (argv[0]); | 162 | progname = canonical_progname (argv[0]); |
163 | #ifdef GDBM_DEBUG_ENABLE | ||
164 | gdbm_debug_printer = debug_printer; | ||
165 | #endif | ||
166 | |||
149 | while (--argc) | 167 | while (--argc) |
150 | { | 168 | { |
151 | char *arg = *++argv; | 169 | char *arg = *++argv; |
@@ -209,6 +227,21 @@ main (int argc, char **argv) | |||
209 | rcvr.max_failures = read_size (arg + 20); | 227 | rcvr.max_failures = read_size (arg + 20); |
210 | rcvr_flags |= GDBM_RCVR_MAX_FAILED_BUCKETS; | 228 | rcvr_flags |= GDBM_RCVR_MAX_FAILED_BUCKETS; |
211 | } | 229 | } |
230 | #ifdef GDBM_DEBUG_ENABLE | ||
231 | else if (strncmp (arg, "-debug=", 7) == 0) | ||
232 | { | ||
233 | char *p; | ||
234 | |||
235 | for (p = strtok (arg + 7, ","); p; p = strtok (NULL, ",")) | ||
236 | { | ||
237 | int f = gdbm_debug_token (p); | ||
238 | if (!f) | ||
239 | fprintf (stderr, "%s: unknown flag: %s\n", progname, p); | ||
240 | else | ||
241 | gdbm_debug_flags |= f; | ||
242 | } | ||
243 | } | ||
244 | #endif | ||
212 | else if (strcmp (arg, "--") == 0) | 245 | else if (strcmp (arg, "--") == 0) |
213 | { | 246 | { |
214 | --argc; | 247 | --argc; |