From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,91c5b958fecf5eff X-Google-Attributes: gid103376,public From: dewar@merv.cs.nyu.edu (Robert Dewar) Subject: Re: GNAT exception traceback Date: 1997/06/17 Message-ID: #1/1 X-Deja-AN: 249031129 References: <199706131810.OAA07239@seahunt.ctron.com> <01bc7a82$c57186a0$2a208b82@wd> Organization: New York University Newsgroups: comp.lang.ada Date: 1997-06-17T00:00:00+00:00 List-Id: Wiljan said <> A couple of points. First: The slient disappearence of exceptions raised in tasks is *required* by the Ada language. The semantics of an unhandled exception is that it silently terminates the task in which it appears if this is not the environment task. This is not considered an error by the language definition. (Note: I personally think this is an annoying little mistake in the definition of the language, what would be so terrible in requiring programmers to write when others => null; at the top level of a task, if you really want this [typically undesirable] behavior?) That being said, in practice, for programs which do not use Constraint_Error as a control structure in the program (one would hope that would be nearly all programs, but sadly this is not the case), considering Constraint_Error to be always fatal is a very reasonable idea. Two ways of persuing this are to always run under control of GDB setting a conditional breakpoint on __gnat_raise that will break only if the exception is CE, or more directly (and still catching nearly all cases) by breaking on the constraint error entry directly. Or, as Wiljan notes, you can hack a-raise.c. The idea of using GDB to determine the program location, given a hex location, is certainly a reasonable one, though in general you really want the traceback which GDB can give you.