1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-15 17:00:26 +00:00

Add debug facility for formatting in rr sessions

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.
This commit is contained in:
Daniel Colascione 2018-06-09 15:41:29 -07:00
parent 16015dea97
commit aaffae8458
2 changed files with 17 additions and 0 deletions

View File

@ -119,6 +119,12 @@ Print the value of the lisp variable given as argument.
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

View File

@ -855,6 +855,17 @@ safe_debug_print (Lisp_Object arg)
}
}
/* 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));
}
DEFUN ("error-message-string", Ferror_message_string, Serror_message_string,
1, 1, 0,