aboutsummaryrefslogtreecommitdiff
path: root/src/client/windows/handler/exception_handler.h
diff options
context:
space:
mode:
authorted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e>2012-07-19 22:03:39 +0000
committerted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e>2012-07-19 22:03:39 +0000
commit2f56276fbfe519913845565f178cfa385da93657 (patch)
treef031e25d09fd0ec8bdb7fc8837979ae4f2bf1982 /src/client/windows/handler/exception_handler.h
parentAdd some more DWARF ARM register numbers to the DWARF CFI register maps (diff)
downloadbreakpad-2f56276fbfe519913845565f178cfa385da93657.tar.xz
Allow adding extra memory regions to minidump on linux/windows
A=Bill McCloskey <wmccloskey@mozilla.com> R=ted at https://bugzilla.mozilla.org/show_bug.cgi?id=662646 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@989 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/windows/handler/exception_handler.h')
-rw-r--r--src/client/windows/handler/exception_handler.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/client/windows/handler/exception_handler.h b/src/client/windows/handler/exception_handler.h
index 09f5177c..38c2c3ca 100644
--- a/src/client/windows/handler/exception_handler.h
+++ b/src/client/windows/handler/exception_handler.h
@@ -67,6 +67,7 @@
#include <string>
#include <vector>
+#include <list>
#include "client/windows/common/ipc_protocol.h"
#include "client/windows/crash_generation/crash_generation_client.h"
@@ -78,6 +79,16 @@ namespace google_breakpad {
using std::vector;
using std::wstring;
+// These entries store a list of memory regions that the client wants included
+// in the minidump.
+struct AppMemory {
+ AppMemory(ULONG64 ptr, ULONG length) : ptr(ptr), length(length) {}
+
+ ULONG64 ptr;
+ ULONG length;
+};
+typedef std::list<AppMemory> AppMemoryList;
+
class ExceptionHandler {
public:
// A callback function to run before Breakpad performs any substantial
@@ -219,6 +230,11 @@ class ExceptionHandler {
// Returns whether out-of-process dump generation is used or not.
bool IsOutOfProcess() const { return crash_generation_client_.get() != NULL; }
+ // Calling RegisterAppMemory(p, len) causes len bytes starting
+ // at address p to be copied to the minidump when a crash happens.
+ void RegisterAppMemory(void *ptr, size_t length);
+ void UnregisterAppMemory(void *ptr);
+
private:
friend class AutoExceptionHandler;
@@ -404,6 +420,10 @@ class ExceptionHandler {
// to not interfere with debuggers.
bool handle_debug_exceptions_;
+ // Callers can request additional memory regions to be included in
+ // the dump.
+ AppMemoryList app_memory_info_;
+
// A stack of ExceptionHandler objects that have installed unhandled
// exception filters. This vector is used by HandleException to determine
// which ExceptionHandler object to route an exception to. When an