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 文件系统
5,815 每月下载次数
在 11 个 Crates(4 个直接) 中使用
93KB
1.5K SLoC
symsrv
此 crate 允许您根据来自 _NT_SYMBOL_PATH
环境变量的规则从符号服务器下载和缓存符号文件。
它提供了一个异步 API。内部使用 reqwest
和 tokio
。
下载的符号存储在文件系统中。不执行自动过期或驱逐。如果您想强制缓存大小限制或过期旧文件,可以使用 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 版 (
LICENSE-APACHE
或 http://www.apache.org/licenses/LICENSE-2.0) - MIT 许可协议 (
LICENSE-MIT
或 http://opensource.org/licenses/MIT)
。
除非您明确说明,否则根据 Apache-2.0 许可证定义,您有意提交的任何贡献,都应按上述方式双许可,不附加任何额外条款或条件。
依赖项
~9–25MB
~347K SLoC