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