一、Python
import traceback                                                                                                                                                                                                   
def function1():
    traceback.print_stack()
    return "function1"
def function2():
    function1()
    return
if __name__ == '__main__':
    function2()
#  File "test.py", line 12, in <module>
#    function2()
#  File "test.py", line 8, in function2
#    function1()
#  File "test.py", line 4, in function1
#    traceback.print_stack()
在需要了解的函数里面添加 traceback.print_stack() 即可打印其调用栈信息。
二、 golang
package main                                                                                                                                                                                                       
import (
    "fmt"
    "runtime/debug"
)
func main() {
    function2()
    fmt.Println("main")
}
func function1() {
    debug.PrintStack()
    fmt.Println("function1")
}
func function2() {
    function1()
    fmt.Println("function2")
}
# goroutine 1 [running]:
# runtime/debug.Stack(0x40d589, 0xc42000e1d0, 0x10)
# 	/usr/lib/go-1.10/src/runtime/debug/stack.go:24 +0xa7
# runtime/debug.PrintStack()
# 	/usr/lib/go-1.10/src/runtime/debug/stack.go:16 +0x22
# main.function1()
# 	/home/zyt/go/src/github.com/zyt312074545/test/main.go:14 +0x22
# main.function2()
# 	/home/zyt/go/src/github.com/zyt312074545/test/main.go:19 +0x22
# main.main()
# 	/home/zyt/go/src/github.com/zyt312074545/test/main.go:9 +0x22
# function1
# function2
# main
在需要了解的函数里面添加 debug.PrintStack() 即可打印其调用栈信息。