osgx发布的示例仅适用于使用框架指针的代码。
x86_64GCC产生的带有优化的代码没有。至少在某些处理器上,内核
vdso代码
x86未使用帧指针。GCC
4.6(具有优化功能)也不在
x86模式下使用帧指针。
所有上述所有因素使“通过帧指针进行堆栈爬网”极其不可靠。
您可以使用
libunwind(支持本地(进程内)和全局(通过ptrace进行进程外)展开)。
否则,您将不得不重新实现很大一部分
libunwind。
通过
ptrace使用获取回溯的示例
libunwind。

osgx发布的示例仅适用于使用框架指针的代码。
x86_64GCC产生的带有优化的代码没有。至少在某些处理器上,内核
vdso代码
x86未使用帧指针。GCC
x86模式下使用帧指针。
所有上述所有因素使“通过帧指针进行堆栈爬网”极其不可靠。
您可以使用
libunwind(支持本地(进程内)和全局(通过ptrace进行进程外)展开)。
否则,您将不得不重新实现很大一部分
libunwind。
通过
ptrace使用获取回溯的示例
libunwind。