#ifndef CRASHPAD_MINIDUMP_MINIDUMP_STACKTRACE_WRITER_H_ #define CRASHPAD_MINIDUMP_MINIDUMP_STACKTRACE_WRITER_H_ #include #include #include #include #include #include "minidump/minidump_extensions.h" #include "minidump/minidump_stream_writer.h" #include "minidump/minidump_thread_id_map.h" #include "minidump/minidump_writable.h" namespace crashpad { namespace internal { struct Header { uint32_t version; uint32_t num_threads; uint32_t num_frames; uint32_t symbol_bytes; }; struct RawThread { uint32_t thread_id; uint32_t start_frame; uint32_t num_frames; }; struct RawFrame { uint64_t instruction_addr; uint32_t symbol_offset; uint32_t symbol_len; }; } // namespace internal class ThreadSnapshot; class ExceptionSnapshot; //! \brief The writer for our custom client-side stacktraces stream in a //! minidump file. class MinidumpStacktraceListWriter final : public internal::MinidumpStreamWriter { public: MinidumpStacktraceListWriter(); MinidumpStacktraceListWriter(const MinidumpStacktraceListWriter&) = delete; MinidumpStacktraceListWriter& operator=(const MinidumpStacktraceListWriter&) = delete; ~MinidumpStacktraceListWriter() override; //! \brief TODO //! //! \param[in] thread_snapshots The thread snapshots to use as source data. //! \param[in] thread_id_map A MinidumpThreadIDMap to be consulted to //! determine the 32-bit minidump thread ID to use for the thread //! identified by \a thread_snapshots. void InitializeFromSnapshot( const std::vector& thread_snapshots, const MinidumpThreadIDMap& thread_id_map, const ExceptionSnapshot* exception_snapshot); protected: // MinidumpWritable: // bool Freeze() override; size_t SizeOfObject() override; size_t Alignment() override; // std::vector Children() override; bool WriteObject(FileWriterInterface* file_writer) override; // MinidumpStreamWriter: MinidumpStreamType StreamType() const override; private: std::vector threads_; std::vector frames_; std::vector symbol_bytes_; internal::Header stacktrace_header_; }; } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_STACKTRACE_WRITER_H_