SwiftBacktrace

SwiftPM Nightly

使用 libunwind 在 Mac 和 Linux 上生成 Swift 堆栈跟踪。

安装

SwiftBacktrace 依赖于 libunwind

在 macOS 上

兼容预装的 /usr/lib/system/libunwind.dylib

在 Linux 上

需要安装 libunwind8

apt-get update && apt-get install -y libunwind8

开始使用

import SwiftBacktrace

print(backtrace().joined(separator: "\n"))          // backtrace()
print(demangledBacktrace().joined(separator: "\n")) // demangled backtrace

在 Linux CI 上的输出示例:

/root/project/.build/x86_64-unknown-linux/debug/SwiftBacktracePackageTests.xctest(SwiftBacktrace.callStackSymbols<A>(_: Swift.Int, transform: ((module: Swift.String, name: Swift.String, offset: Swift.UInt64, address: Swift.Optional<Swift.UnsafeRawPointer>)) -> A) -> Swift.Array<A>+0x87) [0x55f78f85c0b7]
/root/project/.build/x86_64-unknown-linux/debug/SwiftBacktracePackageTests.xctest(SwiftBacktrace.demangledBacktrace(Swift.Int) -> Swift.Array<Swift.String>+0x80) [0x55f78f85ae10]
/root/project/.build/x86_64-unknown-linux/debug/SwiftBacktracePackageTests.xctest(SwiftBacktraceTests.SwiftBacktraceTests.test_backtrace() -> ()+0x4a5) [0x55f78f8608d5]
/root/project/.build/x86_64-unknown-linux/debug/SwiftBacktracePackageTests.xctest(partial apply forwarder for SwiftBacktraceTests.SwiftBacktraceTests.test_backtrace() -> ()+0x9) [0x55f78f861119]

作者

Norio Nomura

许可

此软件包采用 MIT 许可证。 更多信息请查看 LICENSE 文件。