使用BackTrace查看调用堆栈

int backtrace(void **buffer,int size)
该函数获取当前线程的调用堆栈,获取的信息将会被存放在buffer
中,它是一个指针数组,参数size用来指定buffer中可以保存多少个void元素。函数的返回值是实际返回的void元素个数。buffer中的void*元素实际是从堆栈中获取的返回地址。
现在,只有使用ELF二进制格式的程序才能获取函数名称和偏移地址.在其他系统,只有16进制的返回地址能被获取.另外,你可能需要传递相应的符号给链接器,以能支持函数名功能(比如,在使用GNU ld链接器的系统中,你需要传递(-rdynamic), -rdynamic可用来通知链接器将所有符号添加到动态符号表中,如果你的链接器支持-rdynamic的话,建议将其加上!)
https://blog.csdn.net/gongmin856/article/details/79192259