Allow generating minidumps from live processes on Windows.

R=mark at https://breakpad.appspot.com/115002/

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1042 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
ted.mielczarek@gmail.com 2012-09-18 13:55:17 +00:00
parent 61d9b9ff96
commit 6a5ab68d56
2 changed files with 215 additions and 110 deletions

View file

@ -221,6 +221,17 @@ class ExceptionHandler {
static bool WriteMinidump(const wstring &dump_path,
MinidumpCallback callback, void* callback_context);
// Write a minidump of |child| immediately. This can be used to
// capture the execution state of |child| independently of a crash.
// Pass a meaningful |child_blamed_thread| to make that thread in
// the child process the one from which a crash signature is
// extracted.
static bool WriteMinidumpForChild(HANDLE child,
DWORD child_blamed_thread,
const wstring& dump_path,
MinidumpCallback callback,
void* callback_context);
// Get the thread ID of the thread requesting the dump (either the exception
// thread or any other thread that called WriteMinidump directly). This
// may be useful if you want to include additional thread state in your
@ -305,8 +316,9 @@ class ExceptionHandler {
bool WriteMinidumpOnHandlerThread(EXCEPTION_POINTERS* exinfo,
MDRawAssertionInfo* assertion);
// This function does the actual writing of a minidump. It is called
// on the handler thread. requesting_thread_id is the ID of the thread
// This function is called on the handler thread. It calls into
// WriteMinidumpWithExceptionForProcess() with a handle to the
// current process. requesting_thread_id is the ID of the thread
// that requested the dump. If the dump is requested as a result of
// an exception, exinfo contains exception information, otherwise,
// it is NULL.
@ -321,6 +333,20 @@ class ExceptionHandler {
const PMINIDUMP_CALLBACK_INPUT callback_input,
PMINIDUMP_CALLBACK_OUTPUT callback_output);
// This function does the actual writing of a minidump. It is
// called on the handler thread. requesting_thread_id is the ID of
// the thread that requested the dump, if that information is
// meaningful. If the dump is requested as a result of an
// exception, exinfo contains exception information, otherwise, it
// is NULL. process is the one that will be dumped. If
// requesting_thread_id is meaningful and should be added to the
// minidump, write_requester_stream is |true|.
bool WriteMinidumpWithExceptionForProcess(DWORD requesting_thread_id,
EXCEPTION_POINTERS* exinfo,
MDRawAssertionInfo* assertion,
HANDLE process,
bool write_requester_stream);
// Generates a new ID and stores it in next_minidump_id_, and stores the
// path of the next minidump to be written in next_minidump_path_.
void UpdateNextID();