symsrv 0.3.0

A Microsoft symsrv symbol server consumer (downloader + cache)
Documentation

crates.io page docs.rs page

symsrv

This crate lets you download and cache pdb files from symbol servers, according to the rules from the _NT_SYMBOL_PATH environment variable.

It exposes an async API and uses reqwest and tokio::fs.

The downloaded symbols are stored and never evicted.

Microsoft Documentation

Example

use std::path::PathBuf;
use symsrv::{get_default_downstream_store, get_symbol_path_from_environment, SymbolCache};

// Parse the _NT_SYMBOL_PATH environment variable.
let symbol_path =
    get_symbol_path_from_environment("srv**https://msdl.microsoft.com/download/symbols");

// Create a symbol cache which follows the _NT_SYMBOL_PATH recipe.
let default_downstream = get_default_downstream_store(); // "~/sym"
let symbol_cache = SymbolCache::new(symbol_path, default_downstream.as_deref(), false);

// Download and cache a PDB file.
let relative_path: PathBuf =
    ["dcomp.pdb", "648B8DD0780A4E22FA7FA89B84633C231", "dcomp.pdb"].iter().collect();
let local_path = symbol_cache.get_file(&relative_path).await?;

// Use the PDB file.
open_pdb_at_path(&local_path);

License

Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.