// Copyright GoFrame Author(https://goframe.org). All Rights Reserved. // // This Source Code Form is subject to the terms of the MIT License. // If a copy of the MIT was not distributed with this file, // You can obtain one at https://github.com/gogf/gf. package gerror import "runtime" // stack represents a stack of program counters. type stack []uintptr const ( // maxStackDepth marks the max stack depth for error back traces. maxStackDepth = 32 ) // callers returns the stack callers. // Note that it here just retrieves the caller memory address array not the caller information. func callers(skip ...int) stack { var ( pcs [maxStackDepth]uintptr n = 3 ) if len(skip) > 0 { n += skip[0] } return pcs[:runtime.Callers(n, pcs[:])] }