本文所使用的golang为1.14,gdb为8.1. 一直以来对于函数调用都仅限于函数调用栈这个概念上,但对于其中的详细结构却了解不多.所以用gdb调试一个简单的例子,一探究竟. 函数调用栈的结构(以下简称栈) 栈包含以下作用: 存储函数返回地址. 保存调用者的rbp. 保存局部变量. 为被调用函数预留返回值内存空间. 向被调用函数传递参数. 每个函数在执行时都需要一段内存来保存上述的内容,这段内存被称为函数的"栈帧" 一般CPU中包含两个与栈相关的寄存器: rsp:始终指向整个函数调…