Source code

Revision control

Copy as Markdown

Other Tools

use super::*;
#[derive(Debug, Error, serde::Serialize)]
pub enum SectionAppMemoryError {
#[error("Failed to copy memory from process")]
CopyFromProcessError(#[from] CopyFromProcessError),
#[error("Failed to write to memory")]
MemoryWriterError(#[from] MemoryWriterError),
}
impl MinidumpWriter {
/// Write application-provided memory regions.
pub fn write_app_memory(&mut self, buffer: &mut DumpBuf) -> Result<(), SectionAppMemoryError> {
let blamed_thread = self.blamed_thread;
for app_memory in &self.app_memory {
let data_copy =
Self::copy_from_process(blamed_thread, app_memory.ptr, app_memory.length)?;
let section = MemoryArrayWriter::write_bytes(buffer, &data_copy);
let desc = MDMemoryDescriptor {
start_of_memory_range: app_memory.ptr as u64,
memory: section.location(),
};
self.memory_blocks.push(desc);
}
Ok(())
}
}