All Projects → acrisci → Simple Breakpad Server

acrisci / Simple Breakpad Server

Licence: mit
Simple breakpad crash reports collecting server

Programming Languages

coffeescript
4710 projects

Projects that are alternatives of or similar to Simple Breakpad Server

Andzu
In-App Android Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More.
Stars: ✭ 72 (+67.44%)
Mutual labels:  crash-reports
Sentry Go
Official Sentry SDK for Go
Stars: ✭ 415 (+865.12%)
Mutual labels:  crash-reports
Sentry Ruby
Sentry SDK for Ruby
Stars: ✭ 724 (+1583.72%)
Mutual labels:  crash-reports
crash
The code behind the LibreOffice crash reporter.
Stars: ✭ 20 (-53.49%)
Mutual labels:  crash-reports
Macsymbolicator
Symbolicating macOS/iOS crash reports, easily.
Stars: ✭ 364 (+746.51%)
Mutual labels:  crash-reports
Countly Server
Countly helps you get insights from your application. Available self-hosted or on private cloud.
Stars: ✭ 4,857 (+11195.35%)
Mutual labels:  crash-reports
xamarin-bugly
A bugly SDK for Xamarin Android Bindings
Stars: ✭ 22 (-48.84%)
Mutual labels:  crash-reports
Sentry
Sentry is cross-platform application monitoring, with a focus on error reporting.
Stars: ✭ 29,700 (+68969.77%)
Mutual labels:  crash-reports
Sentry Cocoa
The official Sentry SDK for iOS, tvOS, macOS, watchOS
Stars: ✭ 370 (+760.47%)
Mutual labels:  crash-reports
Acra
Application Crash Reports for Android
Stars: ✭ 5,772 (+13323.26%)
Mutual labels:  crash-reports
CrashHndle
🚓🚓🚓Android 日志抓取。
Stars: ✭ 35 (-18.6%)
Mutual labels:  crash-reports
Sym
A crash log symbolicating Mac app | 一个图形化的崩溃日志符号化工具
Stars: ✭ 360 (+737.21%)
Mutual labels:  crash-reports
Raven Go
Sentry client in Go
Stars: ✭ 554 (+1188.37%)
Mutual labels:  crash-reports
Crashlyzer
Crash viewer web application for displaying the crashes reported by rn-crash-reporter components from React Native mobile applications.
Stars: ✭ 59 (+37.21%)
Mutual labels:  crash-reports
Ios System Symbols
Share iOS system framework's symbol files. Useful for symbolicating iOS crash report.
Stars: ✭ 789 (+1734.88%)
Mutual labels:  crash-reports
rust-minidump
Type definitions, parsing, and analysis for the minidump file format.
Stars: ✭ 243 (+465.12%)
Mutual labels:  crash-reports
Raven Node
A standalone (Node.js) client for Sentry
Stars: ✭ 462 (+974.42%)
Mutual labels:  crash-reports
Bugsnag Android
Bugsnag crash monitoring and reporting tool for Android apps
Stars: ✭ 990 (+2202.33%)
Mutual labels:  crash-reports
Sentry Laravel
Laravel SDK for Sentry
Stars: ✭ 927 (+2055.81%)
Mutual labels:  crash-reports
Countly Sdk Android
Countly Product Analytics Android SDK
Stars: ✭ 626 (+1355.81%)
Mutual labels:  crash-reports

Simple Breakpad Server

Simple collecting server for crash reports sent by google-breakpad.

Simple Breakpad Server is a lightweight alternative to Socorro for small projects.

Installing

npm install -g simple-breakpad-server

Now simply run simple-breakpad-server which should be in your PATH. Navigate to localhost:1127 in your browser to see the server.

Features

  • Send crash reports to the server from your applications.
  • Display crash report information like minidump stackwalks and application metadata.
  • Supports SQLite, PostgreSQL, MySQL, MariaDB
  • Simple web interface for viewing translated crash reports.
  • Add symbols from the web API.

Running in Development

Simple Breakpad Server uses Grunt as a task runner.

npm install
npm run-script serve

The server is now running on port 1127. The default database location is $HOME/.simple-breakpad-server/database.sqlite.

Endpoints

GET /crashreports

View a list of crash reports.

GET /crashreports/<id>

View a single crash report.

GET /crashreports/<id>/files/<file>

Download a file associated with this crash report. For example, to download the minidump file for a crash report, use /crashreports/123/files/upload_file_minidump.

GET /symfiles

See a list of available symfiles used to symbolize the crash reports.

GET /symfiles/<id>

See the contents of an individual symfile.

POST /crashreports

Create a new crash report. Use content type multipart/form-data. Some applications already dump a file in this format, so you can just upload that.

If you have a binary minidump file, use a curl request like this:

curl -F upload_file_minidump=@mymini.dmp \
     -F ver="0.0.1" \
     -F prod=cef \
     localhost:1127/crashreports

POST /symfiles

Add a new symbol file to the database to use to symbolize crash reports.

To create a symfile for your binary, first follow the instructions to install the google-breakpad project.

Then use the dump_syms binary to generate a symbol file.

dump_syms /path/to/binary > /path/to/symfile.syms

Use the content type multipart/form-data to upload it to the server from this endpoint with the name of the file being symfile. Here is an example curl request to upload your symfile:

curl -F symfile=@symfile.syms localhost:1127/symfiles

Configuration

Configuration is done in yaml (or json).

The configuration path is as follows:

  • $PWD/breakpad-server.yaml
  • $HOME/.simple-breakpad-server/breakpad-server.yaml
  • /etc/breakpad-server.yaml

Here is an example configuration:

port: 1127
baseUrl: '/'
database:
  database: 'simple-breakpad-server'
  username: 'myuser'
  password: 'secret'
  dialect: 'sqlite'
  storage: '/home/myuser/.simple-breakpad-server/database.sqlite'
  logging: false
customFields:
  files:
    - name: 'customfile1'
      downloadAs: 'customfile1.jpg'
    - name: 'customfile2'
  params: ['customparam']
dataDir: '/home/myuser/.simple-breakpad-server'
fileMaxUploadSize: 100000000
filesInDatabase: true

Database configuration

Database options are passed directly to Sequelize. See that page for details on how to configure the database. Currently, sqlite is best supported by Simple Breakpad Server.

Custom Fields

Place a list of file parameters in the files array. These will be stored in the database as blobs and can contain binary data. Non-files should go into the params array. These will be stored in the database encoded as strings. File parameters can either be a simple string, or an object specifying a required name (used for upload and download url) and an optional downloadAs which specifies what name will be used when downloading.

Custom files can be downloaded from the GET /crashreports/<id>/files/<file> endpoint and custom params will be shown on the main page for the crash report.

For now, if you change this configuration after the database is initialized, you will have to create the tables on your database manually for things to work.

Data Directory

Simple breakpad server caches symbols on the disk within the directory specified by dataDir. The default location is $HOME/.simple-breakpad-server.

Uploaded Files

By default, there is no enforced limit to uploaded file size (limited by Node.js heap size and database size), and uploaded files (minidumps or custom files) are stored directly in the database. The maximum allowed file size can be specified with fileMaxUploadSize (in bytes).

The server can be directed to store all uploaded files on disk (instead of in the database) with filesInDatabase: false, however the dumps may be unable to be read after switching, so the database should be recreated (manually delete the database.sqlite file from your data directory). Old symbols files (already on disk) should still work fine after changing this setting, even if they don't show up in the web interface's Symfiles list. Note: if filesInDatabase is set to false, and you are doing backups, you should back up your entire data directory (or, at least, the symbols/ directory) in addition to your database file.

Contributing

Simple Breakpad Server is a work in progress and there is a lot to do. Send pull requests and issues on the project's Github page.

Here are some things to do:

  • improve UI
  • endpoint to delete crash reports
  • group and filter crash reports
  • script to create symfiles
  • cli

License

This project is open source and available to you under an MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].