85 "%print-exception-message";
93 "%print-exception-with-stack";
114 scm_write (e_smob->
key, port);
115 scm_puts (
" ", port);
116 scm_write (e_smob->
args, port);
117 scm_puts (
">", port);
119 scm_remember_upto_here_1 (self);
195 scm_cons (key, scm_cons (stack, args)));
225 subr == NULL ? SCM_BOOL_F : scm_from_latin1_string (subr),
226 message == NULL ? SCM_BOOL_F : scm_from_latin1_string (message),
235 const char *expected_type)
237 gdb::unique_xmalloc_ptr<char> msg;
242 if (expected_type != NULL)
244 msg = xstrprintf (_(
"Wrong type argument in position %d"
245 " (expecting %s): ~S"),
246 arg_pos, expected_type);
250 msg = xstrprintf (_(
"Wrong type argument in position %d: ~S"),
256 if (expected_type != NULL)
258 msg = xstrprintf (_(
"Wrong type argument (expecting %s): ~S"),
262 msg = xstrprintf (_(
"Wrong type argument: ~S"));
266 scm_list_1 (bad_value), scm_list_1 (bad_value));
279 const char *error_prefix,
const char *error)
281 gdb::unique_xmalloc_ptr<char> msg;
284 if (error_prefix != NULL)
288 msg = xstrprintf (_(
"%s %s in position %d: ~S"),
289 error_prefix, error, arg_pos);
292 msg = xstrprintf (_(
"%s %s: ~S"), error_prefix, error);
297 msg = xstrprintf (_(
"%s in position %d: ~S"), error, arg_pos);
299 msg = xstrprintf (_(
"%s: ~S"), error);
303 scm_list_1 (bad_value));
315 subr, arg_pos, bad_value,
316 _(
"Invalid object:"),
object);
339 subr, arg_pos, bad_value,
340 _(
"Out of range:"), error);
363 subr, arg_pos, bad_value, NULL, error);
423 gdb_assert_not_reached (
"scm_throw returned");
433 if (exception.
reason == RETURN_QUIT)
437 SCM_EOL, scm_list_1 (scm_from_int (SIGINT)));
440 if (exception.
error == MEMORY_ERROR)
475 port = scm_current_error_port ();
493 " can't find %s.\n"),
506 gdbscm_printf (port, _(
"Error in Scheme exception printing:\n"));
507 scm_display (
status, port);
531 port = scm_current_error_port ();
544 " can't find %s.\n"),
557 gdbscm_printf (port, _(
"Error in Scheme exception printing:\n"));
558 scm_display (
status, port);
580gdb::unique_xmalloc_ptr<char>
583 SCM port = scm_open_output_string ();
593 && scm_is_pair (args)
594 && scm_is_pair (scm_cdr (args)))
596 key = scm_car (args);
597 args = scm_cddr (args);
601 gdb::unique_xmalloc_ptr<char> result
603 scm_close_port (port);
619 gdb_assert_not_reached (
"bad value for \"guile print-stack\"");
637Create a <gdb:exception> object.\n\
639 Arguments: key args\n\
640 These are the standard key,args arguments of \"throw\"." },
644Return #t if the object is a <gdb:exception> object." },
648Return the exception's key." },
652Return the exception's arg list." },
659 {
"%exception-print-style", 0, 0, 0,
662Return the value of the \"guile print-stack\" option." },
664 {
"%exception-count", 0, 0, 0,
667Return a count of the number of <gdb:exception> objects created.\n\
668This is for debugging purposes." },
690 = scm_from_latin1_symbol (
"gdb:invalid-object-error");
static struct parser_state * pstate
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
const char gdbscm_print_excp_none[]
const char * gdbscm_print_excp
void gdbscm_init_gsmob(gdb_smob *base)
SCM gdbscm_safe_call_4(SCM proc, SCM arg0, SCM arg1, SCM arg2, SCM arg3, excp_matcher_func *ok_excps)
const char gdbscm_print_excp_message[]
excp_matcher_func gdbscm_memory_error_p
#define gdbscm_is_false(scm)
void gdbscm_printf(SCM port, const char *format,...) ATTRIBUTE_PRINTF(2
gdb::unique_xmalloc_ptr< char > gdbscm_scm_to_c_string(SCM string)
const char gdbscm_init_module_name[]
static SCM scm_new_smob(scm_t_bits tc, scm_t_bits data)
void gdbscm_define_functions(const scheme_function *, int is_public)
const char gdbscm_print_excp_full[]
scm_t_bits gdbscm_make_smob_type(const char *name, size_t size)
static scm_t_subr as_a_scm_t_subr(SCM(*func)(void))
excp_matcher_func gdbscm_user_error_p
SCM gdbscm_scm_from_c_string(const char *string)
void gdbscm_out_of_range_error(const char *subr, int arg_pos, SCM bad_value, const char *error)
SCM gdbscm_make_out_of_range_error(const char *subr, int arg_pos, SCM bad_value, const char *error)
SCM gdbscm_make_type_error(const char *subr, int arg_pos, SCM bad_value, const char *expected_type)
static SCM gdbscm_percent_exception_print_style(void)
void gdbscm_print_exception_with_stack(SCM port, SCM stack, SCM key, SCM args)
void gdbscm_invalid_object_error(const char *subr, int arg_pos, SCM bad_value, const char *object)
static scm_t_bits exception_smob_tag
SCM gdbscm_make_invalid_object_error(const char *subr, int arg_pos, SCM bad_value, const char *object)
static SCM message_symbol
static SCM with_stack_error_symbol
void gdbscm_memory_error(const char *subr, const char *msg, SCM args)
static SCM memory_error_symbol
SCM gdbscm_make_misc_error(const char *subr, int arg_pos, SCM bad_value, const char *error)
static const scheme_function exception_functions[]
void gdbscm_print_gdb_exception(SCM port, SCM exception)
SCM gdbscm_scm_from_gdb_exception(const gdbscm_gdb_exception &exception)
SCM gdbscm_exception_args(SCM self)
static SCM percent_print_exception_message_var
void gdbscm_throw(SCM exception)
void gdbscm_initialize_exceptions(void)
static unsigned long gdbscm_exception_count
gdb::unique_xmalloc_ptr< char > gdbscm_exception_message_to_string(SCM exception)
SCM gdbscm_exception_key(SCM self)
SCM gdbscm_make_memory_error(const char *subr, const char *msg, SCM args)
static SCM user_error_symbol
static void gdbscm_print_exception_message(SCM port, SCM frame, SCM key, SCM args)
SCM gdbscm_invalid_object_error_symbol
void gdbscm_misc_error(const char *subr, int arg_pos, SCM bad_value, const char *error)
static const char percent_print_exception_with_stack_name[]
SCM gdbscm_make_error_scm(SCM key, SCM subr, SCM message, SCM args, SCM data)
static SCM gdbscm_exception_p(SCM scm)
static const scheme_function private_exception_functions[]
SCM gdbscm_make_exception_with_stack(SCM key, SCM args, SCM stack)
int gdbscm_is_exception(SCM scm)
static const char exception_smob_name[]
static SCM gdbscm_make_arg_error(SCM key, const char *subr, int arg_pos, SCM bad_value, const char *error_prefix, const char *error)
SCM gdbscm_make_exception(SCM key, SCM args)
static const char percent_print_exception_message_name[]
void gdbscm_throw_gdb_exception(gdbscm_gdb_exception exception)
static SCM gdbscm_percent_exception_count(void)
SCM gdbscm_make_error(SCM key, const char *subr, const char *message, SCM args, SCM data)
static SCM percent_print_exception_with_stack_var
static int exscm_print_exception_smob(SCM self, SCM port, scm_print_state *pstate)
enum return_reason reason