Stack traces for Swift on Mac and Linux πŸ“š
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Fix cache names Jan 11, 2018
Sources/Stacked Use CStack 1.0.0 Jan 11, 2018
Tests More debug Jan 11, 2018
.codebeatignore Align CI Dec 29, 2017
.codecov.yml Create .codecov.yml Jun 29, 2017
.gitignore Removed CwL demangler and use stdlib demangler. Aug 15, 2017
.swiftlint.yml Align CI Dec 29, 2017
LICENSE Align CI Dec 29, 2017
Package.swift Add library to products Jan 15, 2018 Update Jan 15, 2018

Stacked πŸ“š

Swift Version Vapor Version Circle CI codebeat badge codecov Readme Score GitHub license

πŸ“¦ Installation

Installing CStack

For Stacked to work, you first need to install the CStack library on the machine that is going to run your project. Please remember to do this on any machine you might deploy your project to:

macOS and Homebrew

Currently the CStack library can be installed through the Vapor tap (by running brew install cstack). If that doesn't work for some reason or Vapor decides to remove the library from their tap, it can be installed through the Nodes tap by following these steps:

First add the tap:

brew tap nodes-vapor/homebrew-tap

And next, install the library by running:

brew install cstack

Linux and APT

To install CStack on Linux using APT, you first need to setup the Vapor APT repository. The guide for this can be found here. After that, CStack can be installed by doing:

apt-get update

And then:

apt-get install cstack

Integrating Stacked in your project

Update your Package.swift file.

.Package(url: "", majorVersion: 0)

Exporting symbols for the stracktraces

Unfortunately, we're not able to specify the needed flags for running any project wanting stacktraces through SPM, since it uses a limited set of whitelisted flags. Because of that, you would need to manually add these flags when building your project:

-Xlinker --export-dynamic

Getting started πŸš€

First remember to import the module:

import Stacked

Second, call getStackTrace to get a stacktrace that works on both Mac and Linux:

FrameAddress.getStackTrace(maxStackSize: 100)

Which will return you the stacktrace as a [String].

πŸ† Credits

This package is developed and maintained by the Vapor team at Nodes. The package owner for this project is Brett.

πŸ“„ License

This package is open-sourced software licensed under the MIT license