class ModuleSnapshot

Defined at line 59 of file ../../third_party/crashpad/src/snapshot/module_snapshot.h

An abstract interface to a snapshot representing a code module

(binary image) loaded into a snapshot process.

Public Methods

std::string Name ()

Returns the module’s pathname.

uint64_t Address ()

Returns the base address that the module is loaded at in the

snapshot process.

uint64_t Size ()

Returns the size that the module occupies in the snapshot process’

address space, starting at its base address.

For macOS snapshots, this method only reports the size of the `__TEXT`

segment, because segments may not be loaded contiguously.

time_t Timestamp ()

Returns the module’s timestamp, if known.

The timestamp is typically the modification time of the file that provided

the module in `time_t` format, seconds since the POSIX epoch. If the

module’s timestamp is unknown, this method returns `0`.

void FileVersion (uint16_t * version_0, uint16_t * version_1, uint16_t * version_2, uint16_t * version_3)

Returns the module’s file version in the

parameters.

If no file version can be determined, the

parameters are set

to `0`.

For macOS snapshots, this is taken from the module’s `LC_ID_DYLIB` load

command for shared libraries, and is `0` for other module types.

void SourceVersion (uint16_t * version_0, uint16_t * version_1, uint16_t * version_2, uint16_t * version_3)

Returns the module’s source version in the

parameters.

If no source version can be determined, the

parameters are

set to `0`.

For macOS snapshots, this is taken from the module’s `LC_SOURCE_VERSION`

load command.

ModuleType GetModuleType ()

Returns the module’s type.

void UUIDAndAge (crashpad::UUID * uuid, uint32_t * age)

Returns the module’s UUID in the

parameter, and the age of

that UUID in

A snapshot module’s UUID is taken directly from the module itself. If the

module does not have a UUID, the

parameter will be zeroed out.

is the number of times the UUID has been reused. This occurs on

Windows with incremental linking. On other platforms

will always be

`0`.

std::string DebugFileName ()

Returns the module’s debug file info name.

On Windows, this references the PDB file, which contains symbol

information held separately from the module itself. On other platforms,

this is normally the basename of the module, because the debug info file’s

name is not relevant even in split-debug scenarios.

std::vector<uint8_t> BuildID ()

Returns the module’s build ID.

On ELF platforms, the build ID is a variable-length byte stream that

identifies a library uniquely, and is usually used to look up its debug

symbols when stored separately. This will return an empty vector if it is

unsupported.

BuildID() and UUIDAndAge() are never available in the same place. When

UUIDAndAge() is unavailable, it will be filled out with the contents of

BuildID() (either 0-padded or truncated) and age will be zero.

std::vector<std::string> AnnotationsVector ()

Returns string annotations recorded in the module.

This method retrieves annotations recorded in a module. These annotations

are intended for diagnostic use, including crash analysis. A module may

contain multiple annotations, so they are returned in a vector.

For macOS snapshots, these annotations are found by interpreting the

module’s `__DATA,__crash_info` section as `crashreporter_annotations_t`.

System libraries using the crash reporter client interface may reference

annotations in this structure. Additional annotations messages may be

found in other locations, which may be module-specific. The dynamic linker

(`dyld`) can provide an annotation at its `_error_string` symbol.

The annotations returned by this method do not duplicate those returned by

AnnotationsSimpleMap() or AnnotationObjects().

std::map<std::string, std::string> AnnotationsSimpleMap ()

Returns key-value string annotations recorded in the module.

This method retrieves annotations recorded in a module. These annotations

are intended for diagnostic use, including crash analysis. “Simple

annotations” are structured as a sequence of key-value pairs, where all

keys and values are strings. These are referred to in Chrome as “crash

keys.”

For macOS snapshots, these annotations are found by interpreting the

`__DATA,crashpad_info` section as `CrashpadInfo`. Clients can use the

Crashpad client interface to store annotations in this structure. Most

annotations under the client’s direct control will be retrievable by this

method. For clients such as Chrome, this includes the process type.

The annotations returned by this method do not duplicate those returned by

AnnotationsVector() or AnnotationObjects(). Additional annotations related

to the process, system, or snapshot producer may be obtained by calling

ProcessSnapshot::AnnotationsSimpleMap().

std::vector<AnnotationSnapshot> AnnotationObjects ()

Returns the typed annotation objects recorded in the module.

This method retrieves annotations recorded in a module. These annotations

are intended for diagnostic use, including crash analysis. Annotation

objects are strongly-typed name-value pairs. The names are not unique.

For macOS snapshots, these annotations are found by interpreting the

`__DATA,crashpad_info` section as `CrashpadInfo`. Clients can use the

Crashpad client interface to store annotations in this structure. Most

annotations under the client’s direct control will be retrievable by this

method. For clients such as Chrome, this includes the process type.

The annotations returned by this method do not duplicate those returned by

AnnotationsVector() or AnnotationsSimpleMap().

std::set<CheckedRange<uint64_t>> ExtraMemoryRanges ()

Returns a set of extra memory ranges specified in the module as

being desirable to include in the crash dump.

std::vector<const UserMinidumpStream *> CustomMinidumpStreams ()

Returns a list of custom minidump stream specified in the module to

be included in the crash dump.

Returns

The caller does not take ownership of the returned objects, they

are scoped to the lifetime of the ModuleSnapshot object that they were

obtained from.

void ~ModuleSnapshot ()

Defined at line 61 of file ../../third_party/crashpad/src/snapshot/module_snapshot.h

Enumerations

enum ModuleType
Name Value
kModuleTypeUnknown 0
kModuleTypeExecutable 1
kModuleTypeSharedLibrary 2
kModuleTypeLoadableModule 3
kModuleTypeDynamicLoader 4

A module’s type.

Defined at line 64 of file ../../third_party/crashpad/src/snapshot/module_snapshot.h