Index: snapshot/win/process_snapshot_win.cc |
diff --git a/snapshot/win/process_snapshot_win.cc b/snapshot/win/process_snapshot_win.cc |
index b25e8caa1079f2267babe3e53543020338af56e2..cb0500ab4ac032ef7f1a730c613c57039d67af5d 100644 |
--- a/snapshot/win/process_snapshot_win.cc |
+++ b/snapshot/win/process_snapshot_win.cc |
@@ -14,6 +14,7 @@ |
#include "snapshot/win/process_snapshot_win.h" |
+#include "base/logging.h" |
#include "snapshot/win/module_snapshot_win.h" |
#include "util/win/time.h" |
@@ -24,7 +25,7 @@ ProcessSnapshotWin::ProcessSnapshotWin() |
system_(), |
threads_(), |
modules_(), |
- // TODO(scottmg): exception_(), |
+ exception_(), |
process_reader_(), |
report_id_(), |
client_id_(), |
@@ -53,6 +54,22 @@ bool ProcessSnapshotWin::Initialize(HANDLE process) { |
return true; |
} |
+bool ProcessSnapshotWin::InitializeException( |
+ DWORD thread_id, |
+ WinVMAddress exception_pointers) { |
+ INITIALIZATION_STATE_DCHECK_VALID(initialized_); |
+ DCHECK(!exception_); |
+ |
+ exception_.reset(new internal::ExceptionSnapshotWin()); |
+ if (!exception_->Initialize( |
+ &process_reader_, thread_id, exception_pointers)) { |
+ exception_.reset(); |
+ return false; |
+ } |
+ |
+ return true; |
+} |
+ |
void ProcessSnapshotWin::GetCrashpadOptions( |
CrashpadInfoClientOptions* options) { |
INITIALIZATION_STATE_DCHECK_VALID(initialized_); |
@@ -149,8 +166,7 @@ std::vector<const ModuleSnapshot*> ProcessSnapshotWin::Modules() const { |
} |
const ExceptionSnapshot* ProcessSnapshotWin::Exception() const { |
- CHECK(false) << "TODO(scottmg): Exception()"; |
- return nullptr; |
+ return exception_.get(); |
} |
void ProcessSnapshotWin::InitializeThreads() { |