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..0b88772c42ed6f6668b460202a78037f2b1a6cef 100644 |
--- a/snapshot/win/process_snapshot_win.cc |
+++ b/snapshot/win/process_snapshot_win.cc |
@@ -24,7 +24,7 @@ ProcessSnapshotWin::ProcessSnapshotWin() |
system_(), |
threads_(), |
modules_(), |
- // TODO(scottmg): exception_(), |
+ exception_(), |
process_reader_(), |
report_id_(), |
client_id_(), |
@@ -53,6 +53,21 @@ bool ProcessSnapshotWin::Initialize(HANDLE process) { |
return true; |
} |
+bool ProcessSnapshotWin::InitializeException( |
+ HANDLE thread, |
+ EXCEPTION_POINTERS* exception_pointers) { |
+ INITIALIZATION_STATE_DCHECK_VALID(initialized_); |
+ DCHECK(!exception_); |
+ |
+ exception_.reset(new internal::ExceptionSnapshotWin()); |
+ if (!exception_->Initialize(&process_reader_, thread, exception_pointers)) { |
+ exception_.reset(); |
+ return false; |
+ } |
+ |
+ return true; |
+} |
+ |
void ProcessSnapshotWin::GetCrashpadOptions( |
CrashpadInfoClientOptions* options) { |
INITIALIZATION_STATE_DCHECK_VALID(initialized_); |
@@ -149,8 +164,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() { |