Index: snapshot/minidump/process_snapshot_minidump.h |
diff --git a/snapshot/minidump/process_snapshot_minidump.h b/snapshot/minidump/process_snapshot_minidump.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9a7f84af1eb3ee2f301c0a46f999a794e0a9e1b1 |
--- /dev/null |
+++ b/snapshot/minidump/process_snapshot_minidump.h |
@@ -0,0 +1,85 @@ |
+// Copyright 2015 The Crashpad Authors. All rights reserved. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); |
+// you may not use this file except in compliance with the License. |
+// You may obtain a copy of the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS IS" BASIS, |
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+// See the License for the specific language governing permissions and |
+// limitations under the License. |
+ |
+#ifndef CRASHPAD_SNAPSHOT_MINIDUMP_PROCESS_SNAPSHOT_MINIDUMP_H_ |
+#define CRASHPAD_SNAPSHOT_MINIDUMP_PROCESS_SNAPSHOT_MINIDUMP_H_ |
+ |
+#include <sys/time.h> |
+#include <windows.h> |
+#include <dbghelp.h> |
+ |
+#include <map> |
+#include <string> |
+#include <vector> |
+ |
+#include "base/basictypes.h" |
+#include "minidump/minidump_extensions.h" |
+#include "snapshot/exception_snapshot.h" |
+#include "snapshot/module_snapshot.h" |
+#include "snapshot/process_snapshot.h" |
+#include "snapshot/system_snapshot.h" |
+#include "snapshot/thread_snapshot.h" |
+#include "util/file/file_reader.h" |
+#include "util/misc/initialization_state_dcheck.h" |
+ |
+namespace crashpad { |
+ |
+//! \brief A ProcessSnapshot based on a minidump file. |
+class ProcessSnapshotMinidump final : public ProcessSnapshot { |
+ public: |
+ ProcessSnapshotMinidump(); |
+ ~ProcessSnapshotMinidump() override; |
+ |
+ //! \brief Initializes the object. |
+ //! |
+ //! \param[in] file_reader A file reader corresponding to a minidump file. |
+ //! The file reader must support seeking. |
+ //! |
+ //! \return `true` if the snapshot could be created, `false` otherwise with |
+ //! an appropriate message logged. |
+ bool Initialize(FileReaderInterface* file_reader); |
+ |
+ // ProcessSnapshot: |
+ |
+ pid_t ProcessID() const override; |
+ pid_t ParentProcessID() const override; |
+ void SnapshotTime(timeval* snapshot_time) const override; |
+ void ProcessStartTime(timeval* start_time) const override; |
+ void ProcessCPUTimes(timeval* user_time, timeval* system_time) const override; |
+ const std::map<std::string, std::string>& AnnotationsSimpleMap() |
+ const override; |
+ const SystemSnapshot* System() const override; |
+ std::vector<const ThreadSnapshot*> Threads() const override; |
+ std::vector<const ModuleSnapshot*> Modules() const override; |
+ const ExceptionSnapshot* Exception() const override; |
+ |
+ private: |
+ // Initializes data carried in a MinidumpCrashpadInfo stream on behalf of |
+ // Initialize(). |
+ void InitializeCrashpadInfo(); |
+ |
+ MINIDUMP_HEADER header_; |
+ std::vector<MINIDUMP_DIRECTORY> stream_directory_; |
+ std::map<MinidumpStreamType, const MINIDUMP_LOCATION_DESCRIPTOR*> stream_map_; |
+ MinidumpCrashpadInfo crashpad_info_; |
+ std::map<std::string, std::string> annotations_simple_map_; |
+ FileReaderInterface* file_reader_; // weak |
+ InitializationStateDcheck initialized_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ProcessSnapshotMinidump); |
+}; |
+ |
+} // namespace crashpad |
+ |
+#endif // CRASHPAD_SNAPSHOT_MINIDUMP_PROCESS_SNAPSHOT_MINIDUMP_H_ |