xref: /petsc/src/sys/error/errabort.c (revision 66af8762ec03dbef0e079729eb2a1734a35ed7ff)
1 /*
2        The default error handlers and code that allows one to change
3    error handlers.
4 */
5 #include <petscsys.h> /*I "petscsys.h" I*/
6 
7 /*@C
8   PetscAbortErrorHandler - Error handler that calls abort on error.
9   This routine is very useful when running in the debugger, because the
10   user can look directly at the stack frames and the variables.
11 
12   Not Collective
13 
14   Input Parameters:
15 + comm - communicator over which error occurred
16 . line - the line number of the error (indicated by __LINE__)
17 . fun  - the function name
18 . file - the file in which the error was detected (indicated by __FILE__)
19 . mess - an error text string, usually just printed to the screen
20 . n    - the generic error number
21 . p    - specific error number
22 - ctx  - error handler context
23 
24   Options Database Keys:
25 + -on_error_abort                                         - Activates aborting when an error is encountered
26 - -start_in_debugger [noxterm,dbx,xxgdb]  [-display name] - Starts all
27     processes in the debugger and uses PetscAbortErrorHandler().  By default the
28     debugger is gdb; alternatives are dbx and xxgdb.
29 
30   Level: developer
31 
32   Notes:
33   Users do not directly employ this routine
34 
35   Use `PetscPushErrorHandler()` to set the desired error handler.  The
36   currently available PETSc error handlers include `PetscTraceBackErrorHandler()`,
37   `PetscAttachDebuggerErrorHandler()`, and `PetscAbortErrorHandler()`.
38 
39 .seealso: `PetscError()`, `PetscPushErrorHandler()`, `PetscPopErrorHander()`, `PetscTraceBackErrorHandler()`,
40           `PetscAttachDebuggerErrorHandler()`, `PetscMPIAbortErrorHandler()`, `PetscReturnErrorHandler()`, `PetscEmacsClientErrorHandler()`
41 @*/
42 PetscErrorCode PetscAbortErrorHandler(MPI_Comm comm, int line, const char *fun, const char *file, PetscErrorCode n, PetscErrorType p, const char *mess, void *ctx)
43 {
44   PetscFunctionBegin;
45   (void)comm;
46   (void)p;
47   (void)ctx;
48   n = (*PetscErrorPrintf)("PetscAbortErrorHandler: %s() at %s:%d %s\n  To prevent termination, change the error handler using PetscPushErrorHandler()\n", fun, file, line, mess);
49   abort();
50   (void)n;
51   PetscFunctionReturn(PETSC_SUCCESS);
52 }
53