diff --git a/src/util/gdbinit b/src/util/gdbinit index 25ea8cf9d..58e259d5a 100644 --- a/src/util/gdbinit +++ b/src/util/gdbinit @@ -20,19 +20,33 @@ macro define NIL (cl_symbols) macro define T (cl_symbols+1) define ecl_print + set $cl_debug_arg = (long)($arg0) + print $cl_debug_arg set $cl_debug_stream = ecl_make_string_output_stream(4096, 0) - #set $cl_debug_void = ecl_princ( $arg0, $cl_debug_stream) - #print $cl_debug_stream->stream.object0->base_string.self - #set $cl_debug_stream->stream.object0->base_string.fillp = 0 - - set $cl_debug_imm = 3 & (long)$arg0 - set $cl_debug_type = ($cl_debug_imm ? $cl_debug_imm : $arg0->d.t) + set $cl_debug_imm = 3 & $cl_debug_arg + set $cl_debug_type = ($cl_debug_imm ? $cl_debug_imm : ((cl_object)$cl_debug_arg)->d.t) print (cl_type) $cl_debug_type # not safe for printing if $cl_debug_type > 0 - set $cl_debug_void = si_write_ugly_object( $arg0, $cl_debug_stream) + set $cl_debug_void = si_write_ugly_object( $cl_debug_arg, $cl_debug_stream) + print $cl_debug_stream->stream.object0->base_string.self + + set $cl_debug_stream->stream.object0->base_string.fillp = 0 + set $cl_debug_void = ecl_princ( $cl_debug_arg, $cl_debug_stream) + # ensure string is terminated + set $cl_debug_stream->stream.object0->base_string.self[$cl_debug_stream->stream.object0->base_string.fillp] = 0 print $cl_debug_stream->stream.object0->base_string.self end end + + +define ecl_eval + set $cl_debug_str = ecl_make_simple_base_string( "$arg0", -1) + set $cl_debug_stream = ecl_make_string_input_stream( $cl_debug_str, 0, ((struct ecl_base_string*)$cl_debug_str)->fillp) + set $cl_debug_form = cl_read(1, $cl_debug_stream) + disable breakpoints + ecl_print cl_eval($cl_debug_form) + enable breakpoints +end