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