]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/msw/crashrpt.h
Don't define __STRICT_ANSI__, we should build both with and without it.
[wxWidgets.git] / include / wx / msw / crashrpt.h
... / ...
CommitLineData
1///////////////////////////////////////////////////////////////////////////////
2// Name: wx/msw/crashrpt.h
3// Purpose: helpers for the structured exception handling (SEH) under Win32
4// Author: Vadim Zeitlin
5// Modified by:
6// Created: 13.07.2003
7// Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org>
8// Licence: wxWindows licence
9///////////////////////////////////////////////////////////////////////////////
10
11#ifndef _WX_MSW_CRASHRPT_H_
12#define _WX_MSW_CRASHRPT_H_
13
14#include "wx/defs.h"
15
16#if wxUSE_CRASHREPORT
17
18struct _EXCEPTION_POINTERS;
19
20// ----------------------------------------------------------------------------
21// crash report generation flags
22// ----------------------------------------------------------------------------
23
24enum
25{
26 // we always report where the crash occurred
27 wxCRASH_REPORT_LOCATION = 0,
28
29 // if this flag is given, the call stack is dumped
30 //
31 // this results in dump/crash report as small as possible, this is the
32 // default flag
33 wxCRASH_REPORT_STACK = 1,
34
35 // if this flag is given, the values of the local variables are dumped
36 //
37 // note that with the current implementation it requires dumping the full
38 // process address space and so this will result in huge dump file and will
39 // take some time to generate
40 //
41 // it's probably not a good idea to use this by default, start with default
42 // mini dump and ask your users to set WX_CRASH_FLAGS environment variable
43 // to 2 or 4 if you need more information in the dump
44 wxCRASH_REPORT_LOCALS = 2,
45
46 // if this flag is given, the values of all global variables are dumped
47 //
48 // this creates a much larger mini dump than just wxCRASH_REPORT_STACK but
49 // still much smaller than wxCRASH_REPORT_LOCALS one
50 wxCRASH_REPORT_GLOBALS = 4,
51
52 // default is to create the smallest possible crash report
53 wxCRASH_REPORT_DEFAULT = wxCRASH_REPORT_LOCATION | wxCRASH_REPORT_STACK
54};
55
56// ----------------------------------------------------------------------------
57// wxCrashContext: information about the crash context
58// ----------------------------------------------------------------------------
59
60struct WXDLLIMPEXP_BASE wxCrashContext
61{
62 // initialize this object with the given information or from the current
63 // global exception info which is only valid inside wxApp::OnFatalException
64 wxCrashContext(_EXCEPTION_POINTERS *ep = NULL);
65
66 // get the name for this exception code
67 wxString GetExceptionString() const;
68
69
70 // exception code
71 size_t code;
72
73 // exception address
74 void *addr;
75
76 // machine-specific registers vaues
77 struct
78 {
79#ifdef __INTEL__
80 wxInt32 eax, ebx, ecx, edx, esi, edi,
81 ebp, esp, eip,
82 cs, ds, es, fs, gs, ss,
83 flags;
84#endif // __INTEL__
85 } regs;
86};
87
88// ----------------------------------------------------------------------------
89// wxCrashReport: this class is used to create crash reports
90// ----------------------------------------------------------------------------
91
92struct WXDLLIMPEXP_BASE wxCrashReport
93{
94 // set the name of the file to which the report is written, it is
95 // constructed from the .exe name by default
96 static void SetFileName(const wxString& filename);
97
98 // return the current file name
99 static wxString GetFileName();
100
101 // write the exception report to the file, return true if it could be done
102 // or false otherwise
103 //
104 // if ep pointer is NULL, the global exception info which is valid only
105 // inside wxApp::OnFatalException() is used
106 static bool Generate(int flags = wxCRASH_REPORT_DEFAULT,
107 _EXCEPTION_POINTERS *ep = NULL);
108
109
110 // generate a crash report from outside of wxApp::OnFatalException(), this
111 // can be used to take "snapshots" of the program in wxApp::OnAssert() for
112 // example
113 static bool GenerateNow(int flags = wxCRASH_REPORT_DEFAULT);
114};
115
116#endif // wxUSE_CRASHREPORT
117
118#endif // _WX_MSW_CRASHRPT_H_
119