C/C++中手动获取调用堆栈
当我们的程序core掉之后,如果能获取到core时的函数调用堆栈将非常有利于定位问题。在Windows下可以使用SEH机制;在Linux下通过gdb使用coredump文件即可。 但有时候由于某些错误导致堆栈被破坏,发生拿不到调用堆栈的情况。 一些基础预备知识本文不再详述,可以参考以下文章: 函数调用栈的获取原理分析 寄存器、函数调用与栈帧 需要知道的信息: 函数调用对应的call指令本质上是先压入下一条指令的地址到堆栈,然后跳转到目标函数地址 函数返回指令ret则是从堆栈取出一个地址,然后跳转…