19
19
<a name="line9"> 9: </a><font color="#A020F0">#endif</font>
20
20
<a name="line10"> 10: </a><font color="#A020F0">#include </font><font color="#666666">"petscfix.h"</font><font color="#A020F0"></font>
22
<a name="line12"> 12: </a><font color="#B22222">/*@C</font>
23
<a name="line13"> 13: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Sys/PetscAbortErrorHandler.html#PetscAbortErrorHandler">PetscAbortErrorHandler</A> - Error handler that calls abort on error. </font>
24
<a name="line14"> 14: </a><font color="#B22222"> This routine is very useful when running in the debugger, because the </font>
25
<a name="line15"> 15: </a><font color="#B22222"> user can look directly at the stack frames and the variables.</font>
27
<a name="line17"> 17: </a><font color="#B22222"> Not Collective</font>
29
<a name="line19"> 19: </a><font color="#B22222"> Input Parameters:</font>
30
<a name="line20"> 20: </a><font color="#B22222">+ line - the line number of the error (indicated by __LINE__)</font>
31
<a name="line21"> 21: </a><font color="#B22222">. file - the file in which the error was detected (indicated by __FILE__)</font>
32
<a name="line22"> 22: </a><font color="#B22222">. dir - the directory of the file (indicated by __SDIR__)</font>
33
<a name="line23"> 23: </a><font color="#B22222">. mess - an error text string, usually just printed to the screen</font>
34
<a name="line24"> 24: </a><font color="#B22222">. n - the generic error number</font>
35
<a name="line25"> 25: </a><font color="#B22222">. p - specific error number</font>
36
<a name="line26"> 26: </a><font color="#B22222">- ctx - error handler context</font>
38
<a name="line28"> 28: </a><font color="#B22222"> Options Database Keys:</font>
39
<a name="line29"> 29: </a><font color="#B22222">+ -on_error_abort - Activates aborting when an error is encountered</font>
40
<a name="line30"> 30: </a><font color="#B22222">- -start_in_debugger [noxterm,dbx,xxgdb] [-display name] - Starts all</font>
41
<a name="line31"> 31: </a><font color="#B22222"> processes in the debugger and uses <A href="../../../../docs/manualpages/Sys/PetscAbortErrorHandler.html#PetscAbortErrorHandler">PetscAbortErrorHandler</A>(). By default the </font>
42
<a name="line32"> 32: </a><font color="#B22222"> debugger is gdb; alternatives are dbx and xxgdb.</font>
44
<a name="line34"> 34: </a><font color="#B22222"> Level: developer</font>
46
<a name="line36"> 36: </a><font color="#B22222"> Notes:</font>
47
<a name="line37"> 37: </a><font color="#B22222"> Most users need not directly employ this routine and the other error </font>
48
<a name="line38"> 38: </a><font color="#B22222"> handlers, but can instead use the simplified interface <A href="../../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>, which</font>
49
<a name="line39"> 39: </a><font color="#B22222"> has the calling sequence</font>
50
<a name="line40"> 40: </a><font color="#B22222">$ <A href="../../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(number,p,mess)</font>
52
<a name="line42"> 42: </a><font color="#B22222"> Notes for experienced users:</font>
53
<a name="line43"> 43: </a><font color="#B22222"> Use <A href="../../../../docs/manualpages/Sys/PetscPushErrorHandler.html#PetscPushErrorHandler">PetscPushErrorHandler</A>() to set the desired error handler. The</font>
54
<a name="line44"> 44: </a><font color="#B22222"> currently available PETSc error handlers include <A href="../../../../docs/manualpages/Sys/PetscTraceBackErrorHandler.html#PetscTraceBackErrorHandler">PetscTraceBackErrorHandler</A>(),</font>
55
<a name="line45"> 45: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Sys/PetscAttachDebuggerErrorHandler.html#PetscAttachDebuggerErrorHandler">PetscAttachDebuggerErrorHandler</A>(), and <A href="../../../../docs/manualpages/Sys/PetscAbortErrorHandler.html#PetscAbortErrorHandler">PetscAbortErrorHandler</A>().</font>
57
<a name="line47"> 47: </a><font color="#B22222"> Concepts: error handler^aborting</font>
58
<a name="line48"> 48: </a><font color="#B22222"> Concepts: aborting on error</font>
60
<a name="line50"> 50: </a><font color="#B22222">.seealso: <A href="../../../../docs/manualpages/Sys/PetscPushErrorHandler.html#PetscPushErrorHandler">PetscPushErrorHandler</A>(), <A href="../../../../docs/manualpages/Sys/PetscTraceBackErrorHandler.html#PetscTraceBackErrorHandler">PetscTraceBackErrorHandler</A>(), </font>
61
<a name="line51"> 51: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Sys/PetscAttachDebuggerErrorHandler.html#PetscAttachDebuggerErrorHandler">PetscAttachDebuggerErrorHandler</A>()</font>
62
<a name="line52"> 52: </a><font color="#B22222">@*/</font>
63
<a name="line53"> 53: </a><strong><font color="#4169E1"><a name="PetscAbortErrorHandler"></a>int <A href="../../../../docs/manualpages/Sys/PetscAbortErrorHandler.html#PetscAbortErrorHandler">PetscAbortErrorHandler</A>(int line,char *func,char *file,char* dir,int n,int p,char *mess,void *ctx)</font></strong>
64
<a name="line54"> 54: </a>{
66
<a name="line57"> 57: </a> abort();
67
<a name="line58"> 58: </a> <font color="#4169E1">return</font>(0);
68
<a name="line59"> 59: </a>}
22
<a name="line14"> 14: </a><font color="#B22222">/*@C</font>
23
<a name="line15"> 15: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Sys/PetscAbortErrorHandler.html#PetscAbortErrorHandler">PetscAbortErrorHandler</A> - Error handler that calls abort on error. </font>
24
<a name="line16"> 16: </a><font color="#B22222"> This routine is very useful when running in the debugger, because the </font>
25
<a name="line17"> 17: </a><font color="#B22222"> user can look directly at the stack frames and the variables.</font>
27
<a name="line19"> 19: </a><font color="#B22222"> Not Collective</font>
29
<a name="line21"> 21: </a><font color="#B22222"> Input Parameters:</font>
30
<a name="line22"> 22: </a><font color="#B22222">+ line - the line number of the error (indicated by __LINE__)</font>
31
<a name="line23"> 23: </a><font color="#B22222">. func - function where error occured (indicated by __FUNCT__)</font>
32
<a name="line24"> 24: </a><font color="#B22222">. file - the file in which the error was detected (indicated by __FILE__)</font>
33
<a name="line25"> 25: </a><font color="#B22222">. dir - the directory of the file (indicated by __SDIR__)</font>
34
<a name="line26"> 26: </a><font color="#B22222">. mess - an error text string, usually just printed to the screen</font>
35
<a name="line27"> 27: </a><font color="#B22222">. n - the generic error number</font>
36
<a name="line28"> 28: </a><font color="#B22222">. p - specific error number</font>
37
<a name="line29"> 29: </a><font color="#B22222">- ctx - error handler context</font>
39
<a name="line31"> 31: </a><font color="#B22222"> Options Database Keys:</font>
40
<a name="line32"> 32: </a><font color="#B22222">+ -on_error_abort - Activates aborting when an error is encountered</font>
41
<a name="line33"> 33: </a><font color="#B22222">- -start_in_debugger [noxterm,dbx,xxgdb] [-display name] - Starts all</font>
42
<a name="line34"> 34: </a><font color="#B22222"> processes in the debugger and uses <A href="../../../../docs/manualpages/Sys/PetscAbortErrorHandler.html#PetscAbortErrorHandler">PetscAbortErrorHandler</A>(). By default the </font>
43
<a name="line35"> 35: </a><font color="#B22222"> debugger is gdb; alternatives are dbx and xxgdb.</font>
45
<a name="line37"> 37: </a><font color="#B22222"> Level: developer</font>
47
<a name="line39"> 39: </a><font color="#B22222"> Notes:</font>
48
<a name="line40"> 40: </a><font color="#B22222"> Most users need not directly employ this routine and the other error </font>
49
<a name="line41"> 41: </a><font color="#B22222"> handlers, but can instead use the simplified interface <A href="../../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>, which</font>
50
<a name="line42"> 42: </a><font color="#B22222"> has the calling sequence</font>
51
<a name="line43"> 43: </a><font color="#B22222">$ <A href="../../../../docs/manualpages/Sys/SETERRQ.html#SETERRQ">SETERRQ</A>(number,mess)</font>
52
<a name="line44"> 44: </a><font color="#B22222"> or its variants, <A href="../../../../docs/manualpages/Sys/SETERRQ1.html#SETERRQ1">SETERRQ1</A>(number,formatstring,arg1), <A href="../../../../docs/manualpages/Sys/SETERRQ2.html#SETERRQ2">SETERRQ2</A>(), ... that</font>
53
<a name="line45"> 45: </a><font color="#B22222"> allow including arguments in the message.</font>
55
<a name="line47"> 47: </a><font color="#B22222"> Notes for experienced users:</font>
56
<a name="line48"> 48: </a><font color="#B22222"> Use <A href="../../../../docs/manualpages/Sys/PetscPushErrorHandler.html#PetscPushErrorHandler">PetscPushErrorHandler</A>() to set the desired error handler. The</font>
57
<a name="line49"> 49: </a><font color="#B22222"> currently available PETSc error handlers include <A href="../../../../docs/manualpages/Sys/PetscTraceBackErrorHandler.html#PetscTraceBackErrorHandler">PetscTraceBackErrorHandler</A>(),</font>
58
<a name="line50"> 50: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Sys/PetscAttachDebuggerErrorHandler.html#PetscAttachDebuggerErrorHandler">PetscAttachDebuggerErrorHandler</A>(), and <A href="../../../../docs/manualpages/Sys/PetscAbortErrorHandler.html#PetscAbortErrorHandler">PetscAbortErrorHandler</A>().</font>
60
<a name="line52"> 52: </a><font color="#B22222"> Concepts: error handler^aborting</font>
61
<a name="line53"> 53: </a><font color="#B22222"> Concepts: aborting on error</font>
63
<a name="line55"> 55: </a><font color="#B22222">.seealso: <A href="../../../../docs/manualpages/Sys/PetscPushErrorHandler.html#PetscPushErrorHandler">PetscPushErrorHandler</A>(), <A href="../../../../docs/manualpages/Sys/PetscTraceBackErrorHandler.html#PetscTraceBackErrorHandler">PetscTraceBackErrorHandler</A>(), </font>
64
<a name="line56"> 56: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Sys/PetscAttachDebuggerErrorHandler.html#PetscAttachDebuggerErrorHandler">PetscAttachDebuggerErrorHandler</A>()</font>
65
<a name="line57"> 57: </a><font color="#B22222">@*/</font>
66
<a name="line58"> 58: </a><strong><font color="#4169E1"><a name="PetscAbortErrorHandler"></a>int <A href="../../../../docs/manualpages/Sys/PetscAbortErrorHandler.html#PetscAbortErrorHandler">PetscAbortErrorHandler</A>(int line,const char *fun,const char *file,const char* dir,int n,int p,const char *mess,void *ctx)</font></strong>
67
<a name="line59"> 59: </a>{
68
<a name="line60"> 60: </a> int <A href="../../../../docs/manualpages/Sys/rank.html#rank">rank</A>;
70
<a name="line63"> 63: </a> <A href="http://www.mcs.anl.gov/mpi/www/www3/MPI_Comm_rank.html#MPI_Comm_rank">MPI_Comm_rank</A>(MPI_COMM_WORLD,&<A href="../../../../docs/manualpages/Sys/rank.html#rank">rank</A>);
71
<a name="line64"> 64: </a> (*<A href="../../../../docs/manualpages/Sys/PetscErrorPrintf.html#PetscErrorPrintf">PetscErrorPrintf</A>)(<font color="#666666">"[%d]PETSC ERROR: %s() line %d in %s%s %s\n"</font>,<A href="../../../../docs/manualpages/Sys/rank.html#rank">rank</A>,fun,line,dir,file,mess);
73
<a name="line66"> 66: </a> abort();
74
<a name="line67"> 67: </a> <font color="#4169E1">return</font>(0);
75
<a name="line68"> 68: </a>}