Actual source code: errabort.c
petsc-3.14.6 2021-03-30
1: /*
2: The default error handlers and code that allows one to change
3: error handlers.
4: */
5: #include <petscsys.h>
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.
12: Not Collective
14: Input Parameters:
15: + comm - communicator over which error occurred
16: . line - the line number of the error (indicated by __LINE__)
17: . file - the file in which the error was detected (indicated by __FILE__)
18: . mess - an error text string, usually just printed to the screen
19: . n - the generic error number
20: . p - specific error number
21: - ctx - error handler context
23: Options Database Keys:
24: + -on_error_abort - Activates aborting when an error is encountered
25: - -start_in_debugger [noxterm,dbx,xxgdb] [-display name] - Starts all
26: processes in the debugger and uses PetscAbortErrorHandler(). By default the
27: debugger is gdb; alternatives are dbx and xxgdb.
29: Level: developer
31: Notes:
32: Most users need not directly employ this routine and the other error
33: handlers, but can instead use the simplified interface SETERRQ, which
34: has the calling sequence
35: $ SETERRQ(comm,number,mess)
36: or its variants, SETERRQ1(number,formatstring,arg1), SETERRQ2(), ... that
37: allow including arguments in the message.
39: Notes for experienced users:
40: Use PetscPushErrorHandler() to set the desired error handler. The
41: currently available PETSc error handlers include PetscTraceBackErrorHandler(),
42: PetscAttachDebuggerErrorHandler(), and PetscAbortErrorHandler().
45: .seealso: PetscError(), PetscPushErrorHandler(), PetscPopErrorHander(), PetscTraceBackErrorHandler(),
46: PetscAttachDebuggerErrorHandler(), PetscMPIAbortErrorHandler(), PetscReturnErrorHandler(), PetscEmacsClientErrorHandler()
47: @*/
48: PetscErrorCode PetscAbortErrorHandler(MPI_Comm comm,int line,const char *fun,const char *file,PetscErrorCode n,PetscErrorType p,const char *mess,void *ctx)
49: {
51: (*PetscErrorPrintf)("PetscAbortErrorHandler: %s() line %d in %s %s\n To prevent termination, change the error handler using PetscPushErrorHandler()\n",fun,line,file,mess);
52: abort();
53: return(0);
54: }