Skip to content
This repository was archived by the owner on Oct 28, 2024. It is now read-only.

Commit e434780

Browse files
authored
Merge pull request #48 from weissi/jw-signals
allow other signals
2 parents bb3bd23 + ceaaf36 commit e434780

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

Sources/Backtrace/Backtrace.swift

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,23 @@ private let errorCallback: CBacktraceErrorCallback? = {
6161
}
6262
}
6363

64+
private func printBacktrace(signal: CInt) {
65+
_ = fputs("Received signal \(signal). Backtrace:\n", stderr)
66+
backtrace_full(state, /* skip */ 0, fullCallback, errorCallback, nil)
67+
}
68+
6469
public enum Backtrace {
70+
/// Install the backtrace handler on `SIGILL`.
6571
public static func install() {
66-
self.setupHandler(signal: SIGILL) { _ in
67-
backtrace_full(state, /* skip */ 0, fullCallback, errorCallback, nil)
72+
Backtrace.install(signals: [SIGILL])
73+
}
74+
75+
/// Install the backtrace handler when any of `signals` happen.
76+
public static func install(signals: [CInt]) {
77+
for signal in signals {
78+
self.setupHandler(signal: signal) { signal in
79+
printBacktrace(signal: signal)
80+
}
6881
}
6982
}
7083

0 commit comments

Comments
 (0)