这个问题已经被问过很多次了,但从未得到真正的答案。今天我花了 5 到 6 个小时尝试将一些库移植到 Android(libunwind、liwdfl),这些库可能从未打算在 ARM 上运行。当然,无济于事。
问题是Android缺少backtrace
/ backtrace_symbols
功能。有没有人找到一种方法来打印堆栈跟踪,例如,在收到 SIGSEGV 时?
内部完成此操作的方式是使用调用栈班级。例如:
CallStack cs("logtag");
会将当前本机调用堆栈转储到日志中。不幸的是,这在 NDK 中不可用,并且该类确实随着版本的不同而发生变化。
在 Android KitKat (4.4) 中,执行使用了内部的lib开瓶器图书馆。在当前的“master”分支中,执行 uses libbacktrace,也是一个内部图书馆。然而,这个新库是建立在利本温德, an 开源项目.
因此,您应该能够将 libunwind 构建到您的应用程序中并以这种方式使用它。由于这些库已经在 Android 上使用,因此移植应该不成问题(只需从 AOSP 开始)外部/libunwind来源)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)