我想使用libunwind
提供一个通用调用堆栈函数作为库(.so)的一部分。但是,一旦我链接到libunwind
,与.so链接的可执行文件就会失败。据我了解,我遇到的问题是libunwind
定义了与GCC运行时相同的符号,但实现看似不兼容。
静态或动态地与libunwind
进行链接并不会改变任何内容,在_Unwind_Resume
中抛出异常(如果静态链接)时会出现段错误,否则调用堆栈将从{{}开始1}}(据推测,它之前已经被破坏了。)
有趣的是,问题只发生在我使用GCC时,Clang,一切正常。
是否可以在共享库中使用__cxa_throw
?如果没有,是否有另一个库允许我获取堆栈上函数的名称加指令指针偏移量? libunwind
几乎已经足够好了,但是backtrace()
做了太多的格式化,我必须要解析"解析"第一