Add ability to produce crash dumps on Windows
authorTamar Christina <tamar@zhox.com>
Tue, 3 Oct 2017 17:37:52 +0000 (13:37 -0400)
committerBen Gamari <ben@smart-cactus.org>
Tue, 3 Oct 2017 19:16:27 +0000 (15:16 -0400)
commitec9ac20d0964c9f1323105b5a2df24f50d4fe3ef
tree5e21ede1766511cc09b1eb46e7f571d36f3c34ae
parent55001c0c9934de2cf94d3879cea20c0faf73695c
Add ability to produce crash dumps on Windows

It's often hard to debug things like segfaults on Windows,
mostly because gdb isn't always of use and users don't know
how to effectively use it.

This patch provides a way to create a crash drump by passing

`+RTS --generate-crash-dumps` as an option. If any unhandled
exception is triggered a dump is made that contains enough
information to be able to diagnose things successfully.

Currently the created dumps are a bit big because I include
all registers, code and threads information.

This looks like

```
$ testsuite/tests/rts/derefnull.run/derefnull.exe +RTS
--generate-crash-dumps

Access violation in generated code when reading 0000000000000000
Crash dump created. Dump written to:
        E:\msys64\tmp\ghc-20170901-220250-11216-16628.dmp
```

Test Plan: ./validate

Reviewers: austin, hvr, bgamari, erikd, simonmar

Reviewed By: bgamari, simonmar

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3912
docs/users_guide/8.4.1-notes.rst
docs/users_guide/runtime_control.rst
includes/rts/Flags.h
libraries/base/GHC/RTS/Flags.hsc
libraries/base/changelog.md
rts/RtsFlags.c
rts/package.conf.in
rts/win32/veh_excn.c
rts/win32/veh_excn.h