Actual source code: errabort.c

  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: . 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

 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.

 30:   Level: developer

 32:   Notes:
 33:   Ussers do not directly employ this routine

 35:   Use `PetscPushErrorHandler()` to set the desired error handler.  The
 36:   currently available PETSc error handlers include `PetscTraceBackErrorHandler()`,
 37:   `PetscAttachDebuggerErrorHandler()`, and `PetscAbortErrorHandler()`.

 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: }