• Stars
    star
    112
  • Rank 312,240 (Top 7 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 10 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A cross-platform automated crash report generator/sender for Haxe/OpenFL apps.

crashdumper

A cross-platform automated crash report generator/sender for Haxe/OpenFL apps.

Setup

  1. Install crashdumper (coming soon to haxelib, just github for now).

    Command Line:

    haxelib git crashdumper http://github.com/larsiusprime/crashdumper
    
  2. Include crashdumper in your project.xml:

    <haxelib name="crashdumper"/>
  3. Optionally, set one or both of these haxedefs in your project.xml (for cpp targets)

    <haxedef name="HXCPP_STACK_LINE" />  <!--if you want line numbers-->
    <haxedef name="HXCPP_STACK_TRACE"/>  <!--if you want stack traces-->

    On flash target, stack traces will only be generated in a debug player.

If you don't set the haxedefs, you'll still get a crashdump with a system profile, error message and some other useful info, but you won't get line numbers and a backtrace of the method call stack that led up to the error.

Usage

var unique_id:String = SessionData.generateID("fooApp_"); 
    //generates unique id: "fooApp_YYYY-MM-DD_HH'MM'SS_CRASH"
    
var crashDumper = new CrashDumper(unique_id); 
    //starts the crashDumper

(An example app is provided in the /Example folder)

It will generate something like this:

SystemData
{
  OS : Windows 7 SP1
  RAM: 8387064 KB (8 GB)
  CPU: Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz
  GPU: ATI Radeon HD 4800 Series, driver v. 8.970.100.1100
}
--------------------------------------
filename:	Example
package:	crashdumper.example
version:	1.0.0
session ID:	example_app_2014-06-02_15'38'19
started:	2014-06-02 15:38:19
--------------------------------------
crashed:	2014-06-02 15:38:21
error:		Null Object Reference
stack:
*._Function_1_1 (openfl/display/Stage.hx line 120)
Main.onClick (Main.hx line 55)
openfl.events.Listener.dispatchEvent (openfl/events/EventDispatcher.hx line 268)
openfl.events.EventDispatcher.dispatchEvent (openfl/events/EventDispatcher.hx line 98)
openfl.display.DisplayObject.__dispatchEvent (openfl/display/DisplayObject.hx line 194)
openfl.display.DisplayObject.__fireEvent (openfl/display/DisplayObject.hx line 256)
openfl.display.Stage.__onMouse (openfl/display/Stage.hx line 902)

You may optionally also cache data files (such as a user/player's save game data and/or application config data) at that moment, and the crash report will include verbatim copies of those save files. You can use this to generate a crash report that includes as much data as possible about the user's starting conditions.

Server-Side

CrashDumper can be hooked up to a server-side listener that process and/or stores crash dumps. We are happy to receive any such implementations as pull requests, you can find them all here.

We specifically recommend Crashdump Browser.

Paths

By default will write to your program's application storage directory (SystemPath.applicationStorageDirectory), under /logs/errors/<SESSION_ID>. You can supply your own path, of course.

Performance

Using crashdumper probably comes with a small hit to performance, but it should be much less than the difference between debug and release mode.

HXCPP_STACK_TRACE and HXCPP_STACK_LINE both come with a small hit to performance, but if you're worried about optimization, LINE is the most expensive, TRACE is relatively cheap.

We still need to run performance tests to see what the actual overheads are. We would be more than happy to welcome your benchmark results with crashdumper!

System profiles

Here's some examples of the output created by CrashDumper for different systems:

Windows:

SystemData
{
  OS : Windows 7 SP1
  RAM: 8387064 KB (8 GB)
  CPU: Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz
  GPU: ATI Radeon HD 4800 Series, driver v. 8.970.100.1100
}

Linux:

SystemData
{
  OS : Ubuntu 14.04 LTS (i686)
  RAM: 4022044 KB (3.84 GB)
  CPU: Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
  GPU: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
 Advanced Micro Devices, Inc. [AMD/ATI] Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (rev ff)
, driver v. 
}

Mac:

SystemData
{
  OS : OS X 10.9.2 (13C1021) iMac iMac12,2
  RAM: 16 GB
  CPU: Intel Core i7 3,40 GHz
  GPU: Gainward GeForce GTX 570 1280 MB 1680 x 1050 @ 60 Hz
, driver v. unknown
}

Flash:

SystemData
{
  OS: Windows 7 (flash)
  FLASH: StandAlone v. WIN 13,0,0,214
  CPU: x86
}

TODO

More Repositories

1

bazaarBot

A simple free market simulator engine. Based on "Emergent Economies for Role Playing Games" by Doran and Parberry.
Haxe
373
star
2

polymod

Atomic modding framework for Haxe
Haxe
159
star
3

firetongue

A translation/localization framework written in Haxe
Haxe
143
star
4

SteamWrap

Haxe native extension for the Steam API
Haxe
106
star
5

HxLightMask

A tiny 2D grid-based lighting engine for Haxe
Haxe
43
star
6

tdrpg-tools

A set of tools for the tdrpg-haxe project
Haxe
42
star
7

ThirdPartySteamSites

List of all the third party Steam sites that I know of
41
star
8

tdrpg-bugs

Public bug reporting repository for the tdrpg-haxe project (DQ1-haxe and DQ2-haxe)
38
star
9

divingbell

Source code for the Steam Diving Bell prototype (not to be confused with Steam Deep Dive)
Haxe
29
star
10

haxe-flx-ui

FlxUI - GUI library for Haxe+Flixel
Haxe
28
star
11

FlashEmulator

A proposal for a true "Flash Emulator"
26
star
12

CellGame--Open-Source-fork-of--CellCraft--

A real-time strategy game that incorporates real cellular Biology. Grow your cell and fight off viruses!
ActionScript
23
star
13

georgism

Little website about georgism
Pug
17
star
14

monologue-reader

A Haxe parser & controller library for Monologue trees
Haxe
10
star
15

safeparse

A collection of Haxe static extensions that safely read from XML and JSON, reducing boilerplate
Haxe
10
star
16

larsBounties

Open bounties for various tasks Lars needs to delegate to others
9
star
17

StealMyIdeas

Here's some ideas I have. Feel free to steal them.
7
star
18

boardgames

Some board games I designed once that are now open source
6
star
19

gogwrap

Haxe native extension for the GOG Galaxy API
C++
6
star
20

openfl-fla-plugin-tests

Tests of the OpenFL Custom FLA document
Haxe
5
star
21

fireglyph

A Haxe utility library for alphabets, glyphs, and other writing systems
Haxe
4
star
22

HaxePloverLearn

Drills for the Learn Plover! book, part of the Open Steno Project (Haxe port of Erika-n's AS3 version)
HTML
3
star
23

loc-sync

Synchronizes localization files between Google Sheets and a Git repository
PHP
3
star
24

gamejams

Game Jam Repository
Haxe
3
star
25

haxe-test-projects

Just a dumping ground for test projects I want to easily share.
Haxe
3
star
26

nme-benchmark-threshold

A simple test suite for benchmarking nme.display.BitmapData.threshold() function
Haxe
2
star
27

tdrpg-mod-docs

Mod documentation for the TDRPG engine (Defender's Quest)
1
star
28

songs

Original Songs
1
star
29

defendersquest-loc

Localization Repository for Defender's Quest series
1
star
30

timur_budgets

Video Game Budget records based on work by https://twitter.com/bogorad222
1
star
31

SuperSpaceDefenders

The Super Space Defenders Example Mod for tdrpg-haxe engine
1
star
32

hxcpp-examples

Haxe
1
star
33

SDLGrid

Just a little shared table of every platform that exists and whether it supports SDL, Vulkan, and OpenGL.
1
star
34

genre_evolution

Charting the evolution of genres over time
1
star
35

ActionPact

Fiddling around with a C API for universal input actions
C++
1
star