:orphan: # PetscStackPushExternal Pushes a new function name onto the PETSc default stack that tracks where the running program is currently in the source code. Does not include the filename or line number since this is called by the calling routine for non-PETSc or user functions. ## Synopsis ``` #include void PetscStackPushExternal(char *funct); ``` Not Collective ## Input Parameter - ***funct -*** the function name ## Notes Using `PetscCallExternal()` and friends automatically handles this process In debug mode PETSc maintains a stack of the current function calls that can be used to help to quickly see where a problem has occurred, for example, when a signal is received. It is recommended to use the debugger if extensive information is needed to help debug the problem. The default stack is a global variable called `petscstack`. This is to be used when calling an external package function such as a BLAS function. This also updates the stack line number for the current stack function. ## See Also `PetscAttachDebugger()`, `PetscStackCopy()`, `PetscStackView()`, `PetscStackPopNoCheck()`, `PetscCall()`, `PetscFunctionBegin()`, `PetscFunctionReturn()`, `PetscFunctionBeginHot()`, `PetscFunctionBeginUser()`, `PetscStackPushNoCheck()`, `PetscStackPop` ## Level developer ## Location include/petscerror.h --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petscerror.h) [Index of all Sys routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)