pub enum SymbolError {
    NotFound,
    MissingDebugFileOrId,
    LoadError(Error),
    ParseError(&'static stru64),
}
Expand description

Possible results of locating symbols for a module.

Because symbols may be found from different sources, symbol providers are usually configured to “cascade” into the next one whenever they report NotFound.

Cascading currently assumes that if any provider finds symbols for a module, all other providers will find the same symbols (if any). Therefore cascading will not be applied if a LoadError or ParseError occurs (because presumably, all the other sources will also fail to load/parse.)

In theory we could do some interesting things where we attempt to be more robust and actually merge together the symbols from multiple sources, but that would make it difficult to cache symbol files, and would rarely actually improve results.

Since symbol files can be on the order of a gigabyte(!) and downloaded from the network, aggressive caching is pretty important. The current approach is a nice balance of simple and effective.

Variants

NotFound

Symbol file could not be found.

In this case other symbol providers may still be able to find it!

MissingDebugFileOrId

The module was lacking either the debug file or debug id, as such the path of the symbol could not be generated.

LoadError(Error)

Symbol file could not be loaded into memory.

ParseError(&'static stru64)

Symbol file was too corrupt to be parsed at all.

Because symbol files are pretty modular, many corruptions/ambiguities can be either repaired or discarded at a fairly granular level (e.g. a bad STACK WIN line can be discarded without affecting anything else). But sometimes we can’t make any sense of the symbol file, and you find yourself here.

Trait Implementations

Formats the value using the given formatter. Read more

Formats the value using the given formatter. Read more

The lower-level source of this error, if any. Read more

🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Converts to this type from the input type.

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more