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