The existing debug print commands don't work in rr, since they touch
stderr. The new xfmt command just calls Fformat and doesn't touch the
stdio streams.
* src/.gdbinit:
(xfmt): New GDB command.
* src/print.c:
(debug_format): New function.
Works only when an inferior emacs is executing.
end
+# Format the value and print it as a string. Works in
+# an rr session and during live debugging. Calls into lisp.
+define xfmt
+ printf "%s\n", debug_format("%S", $arg0)
+end
+
# Print out current buffer point and boundaries
define ppt
set $b = current_buffer
}
}
+/* This function formats the given object and returns the result as a
+ string. Use this in contexts where you can inspect strings, but
+ where stderr output won't work --- e.g., while replaying rr
+ recordings. */
+const char * debug_format (const char *, Lisp_Object) EXTERNALLY_VISIBLE;
+const char *
+debug_format (const char *fmt, Lisp_Object arg)
+{
+ return SSDATA (CALLN (Fformat, build_string (fmt), arg));
+}
+
\f
DEFUN ("error-message-string", Ferror_message_string, Serror_message_string,
1, 1, 0,