xref: /petsc/src/sys/error/errabort.c (revision 45b666d6b3bfc63bec15238a694380a0b8801683)
17d0a6c19SBarry Smith 
2e5c89e4eSSatish Balay /*
3e5c89e4eSSatish Balay        The default error handlers and code that allows one to change
4e5c89e4eSSatish Balay    error handlers.
5e5c89e4eSSatish Balay */
6c6db04a5SJed Brown #include <petscsys.h>           /*I "petscsys.h" I*/
7e5c89e4eSSatish Balay 
8e5c89e4eSSatish Balay /*@C
9e5c89e4eSSatish Balay    PetscAbortErrorHandler - Error handler that calls abort on error.
10e5c89e4eSSatish Balay    This routine is very useful when running in the debugger, because the
11e5c89e4eSSatish Balay    user can look directly at the stack frames and the variables.
12e5c89e4eSSatish Balay 
13e5c89e4eSSatish Balay    Not Collective
14e5c89e4eSSatish Balay 
15e5c89e4eSSatish Balay    Input Parameters:
16e32f2f54SBarry Smith +  comm - communicator over which error occurred
17e32f2f54SBarry Smith .  line - the line number of the error (indicated by __LINE__)
18e5c89e4eSSatish Balay .  file - the file in which the error was detected (indicated by __FILE__)
19e5c89e4eSSatish Balay .  mess - an error text string, usually just printed to the screen
20e5c89e4eSSatish Balay .  n - the generic error number
21e5c89e4eSSatish Balay .  p - specific error number
22e5c89e4eSSatish Balay -  ctx - error handler context
23e5c89e4eSSatish Balay 
24e5c89e4eSSatish Balay    Options Database Keys:
25e5c89e4eSSatish Balay +  -on_error_abort - Activates aborting when an error is encountered
26e5c89e4eSSatish Balay -  -start_in_debugger [noxterm,dbx,xxgdb]  [-display name] - Starts all
27e5c89e4eSSatish Balay     processes in the debugger and uses PetscAbortErrorHandler().  By default the
28e5c89e4eSSatish Balay     debugger is gdb; alternatives are dbx and xxgdb.
29e5c89e4eSSatish Balay 
30e5c89e4eSSatish Balay    Level: developer
31e5c89e4eSSatish Balay 
32e5c89e4eSSatish Balay    Notes:
33e5c89e4eSSatish Balay    Most users need not directly employ this routine and the other error
34e5c89e4eSSatish Balay    handlers, but can instead use the simplified interface SETERRQ, which
35e5c89e4eSSatish Balay    has the calling sequence
36e32f2f54SBarry Smith $     SETERRQ(comm,number,mess)
37e5c89e4eSSatish Balay    or its variants, SETERRQ1(number,formatstring,arg1), SETERRQ2(), ... that
38e5c89e4eSSatish Balay    allow including arguments in the message.
39e5c89e4eSSatish Balay 
40e5c89e4eSSatish Balay    Notes for experienced users:
41e5c89e4eSSatish Balay    Use PetscPushErrorHandler() to set the desired error handler.  The
42e5c89e4eSSatish Balay    currently available PETSc error handlers include PetscTraceBackErrorHandler(),
43e5c89e4eSSatish Balay    PetscAttachDebuggerErrorHandler(), and PetscAbortErrorHandler().
44e5c89e4eSSatish Balay 
45e5c89e4eSSatish Balay 
46*45b666d6SBarry Smith .seealso: PetscError(), PetscPushErrorHandler(), PetscPopErrorHander(), PetscTraceBackErrorHandler(),
47*45b666d6SBarry Smith           PetscAttachDebuggerErrorHandler(), PetscMPIAbortErrorHandler(), PetscReturnErrorHandler(), PetscEmacsClientErrorHandler()
48e5c89e4eSSatish Balay @*/
49efca3c55SSatish Balay PetscErrorCode  PetscAbortErrorHandler(MPI_Comm comm,int line,const char *fun,const char *file,PetscErrorCode n,PetscErrorType p,const char *mess,void *ctx)
50e5c89e4eSSatish Balay {
51e5c89e4eSSatish Balay   PetscFunctionBegin;
52efca3c55SSatish Balay   (*PetscErrorPrintf)("%s() line %d in %s %s\n",fun,line,file,mess);
53e5c89e4eSSatish Balay   abort();
54e5c89e4eSSatish Balay   PetscFunctionReturn(0);
55e5c89e4eSSatish Balay }
56e5c89e4eSSatish Balay 
57