#symbol #cache #file #download #microsoft #env-var #variables

symsrv

Microsoft symsrv 符号服务器消费者(下载器 + 缓存)

10 个不稳定版本 (4 个破坏性版本)

0.5.3 2024 年 7 月 30 日
0.5.2 2024 年 5 月 22 日
0.5.1 2024 年 4 月 11 日
0.4.0 2024 年 2 月 28 日
0.1.2 2022 年 5 月 17 日

#110 in 文件系统

Download history 1289/week @ 2024-05-03 1174/week @ 2024-05-10 1243/week @ 2024-05-17 707/week @ 2024-05-24 903/week @ 2024-05-31 657/week @ 2024-06-07 765/week @ 2024-06-14 579/week @ 2024-06-21 810/week @ 2024-06-28 603/week @ 2024-07-05 1072/week @ 2024-07-12 858/week @ 2024-07-19 1515/week @ 2024-07-26 1274/week @ 2024-08-02 1570/week @ 2024-08-09 1278/week @ 2024-08-16

5,815 每月下载次数
11 个 Crates(4 个直接) 中使用

MIT/Apache

93KB
1.5K SLoC

crates.io page docs.rs page

symsrv

此 crate 允许您根据来自 _NT_SYMBOL_PATH 环境变量的规则从符号服务器下载和缓存符号文件。

它提供了一个异步 API。内部使用 reqwesttokio

下载的符号存储在文件系统中。不执行自动过期或驱逐。如果您想强制缓存大小限制或过期旧文件,可以使用 SymsrvObserver 特性,然后编写自己的实现来自动清理文件。

Microsoft 文档

示例

use symsrv::SymsrvDownloader;

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

// Create a downloader which follows the _NT_SYMBOL_PATH recipe.
let mut downloader = SymsrvDownloader::new(parsed_symbol_path);
downloader.set_default_downstream_store(symsrv::get_home_sym_dir());

// Download and cache a PDB file.
let local_path = downloader.get_file("dcomp.pdb", "648B8DD0780A4E22FA7FA89B84633C231").await?;

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

命令行工具 symfetch

此仓库还包含一个名为 symfetch 的小型示例程序。您可以通过以下方式安装它

cargo install --examples symsrv

运行它,使用 symfetch <filename> <hash> - 有关详细信息,请参阅 symfetch --help

许可协议

根据您的选择,许可协议为

除非您明确说明,否则根据 Apache-2.0 许可证定义,您有意提交的任何贡献,都应按上述方式双许可,不附加任何额外条款或条件。

依赖项

~9–25MB
~347K SLoC