在共享库中使用libunwind

时间:2014-07-15 11:36:52

标签: c++ linux gcc stack-unwinding

我想使用libunwind提供一个通用调用堆栈函数作为库(.so)的一部分。但是,一旦我链接到libunwind,与.so链接的可执行文件就会失败。据我了解,我遇到的问题是libunwind定义了与GCC运行时相同的符号,但实现看似不兼容。

静态或动态地与libunwind进行链接并不会改变任何内容,在_Unwind_Resume中抛出异常(如果静态链接)时会出现段错误,否则调用堆栈将从{{}开始1}}(据推测,它之前已经被破坏了。)

有趣的是,问题只发生在我使用GCC时,Clang,一切正常。

是否可以在共享库中使用__cxa_throw?如果没有,是否有另一个库允许我获取堆栈上函数的名称加指令指针偏移量? libunwind几乎已经足够好了,但是backtrace()做了太多的格式化,我必须要解析"解析"第一

0 个答案:

没有答案