使用 unwind.h 进行堆栈展开

问题描述 投票:0回答:1

我想使用 gcc 进行堆栈展开。我找不到向我展示如何执行此操作的示例代码。

我尝试按照此网站的说明进行操作,但我意识到我的 gcc 使用的 unwind.h

 是不同的。例如,我没有 
unw_word_t
,而是 
_Unwind_Word
。我不知道应该用什么来代替 
unw_getcontext()
unw_init_local()

我的

unwind.h

类似于
http://www.opensource.apple.com/source/gcc/gcc-5482/gcc/unwind.h

任何人都可以给我一个使用该库的示例代码的链接吗?

gcc stack trace
1个回答
1
投票
您尝试使用的示例适用于

libunwind

,但您的标头属于 
libcorkscrew

如果您需要有关如何使用“您的展开”库的好示例,您可以查看 Android 开源项目,他们实现了类

CallStack

,它实现了不同架构所需的所有功能。
正是针对您的情况,我建议您查看文件:

YOUR_PROJECT_FOLDER/system/core/libcorkscrew/backtrace.c
例如,在该文件中,函数 

unwind_backtrace

 使用 libcorkscrew 库中的 
_Unwind_Backtrace
。使用该文件,您可以轻松调整您的示例。

© www.soinside.com 2019 - 2024. All rights reserved.