Skip to content

Commit 8f7bdc4

Browse files
committed
Add documentation
Add documentation to README.md
1 parent 409d4ec commit 8f7bdc4

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

README.md

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,40 @@
1-
# SymbolFilterServer
2-
A small SymSrv symbol server proxy to download just the symbols you want. From https://blogs.msdn.microsoft.com/ricom/2017/02/03/symbol-filter-redux/
1+
# Filtering SymSrv Symbol Server Proxy
2+
A small SymSrv symbol server proxy to download just the symbols you want written in .NET Core. From https://blogs.msdn.microsoft.com/ricom/2017/02/03/symbol-filter-redux/
3+
4+
## Why?
5+
6+
Analyzing [ETW traces][etwtraces] or crash dumps often requires downloading symbols. On Windows, the infrastructure to lookup and download symbols is provided via [SymSrv][symsrv].
7+
Unfortunately, usually most of the symbols in a trace aren't indexed, and / or aren't relevant to the current investigation, wasting time and disk space.
8+
9+
SymbolFilterServer acts as a fast symbol server proxy, immediately returing `404 Not Found` for any symbol not in your provided allow list, and redirecting matching symbols to the real symbol store.
10+
11+
## Examples
12+
13+
To start, let's say you only want to download the symbols for `edgehtml.dll` from the official Microsoft Symbol Store, and attempts to load any other PDB should be blocked. Instead of having a `_NT_SYMBOL_PATH` that looks like this:
14+
15+
```PowerShell
16+
PS> $Env:_NT_SYMBOL_PATH = "srv*C:\symbols*https://msdl.microsoft.com/download/symbols
17+
```
18+
19+
Change the path to look like this:
20+
21+
```PowerShell
22+
PS> $Env:_NT_SYMBOL_PATH = "srv*C:\symbols*http://localhost:8080/https://msdl.microsoft.com/download/symbols"
23+
```
24+
25+
And run the proxy like this:
26+
27+
```PowerShell
28+
PS> SymbolFilterServer.exe --port 8080 "edgehtml.dll"
29+
```
30+
31+
If you have a list of symbols you'd like to reuse, instead of typing them all out on the command line, use a response file like this:
32+
33+
```PowerShell
34+
PS> @("edgehtml.pdb", "ntdll.pdb", "eview.pdb") | Out-File "my-symbols.txt"
35+
PS> SymbolFilterServer.exe --port 8080 @my-symbols.txt
36+
```
37+
38+
39+
[etwtraces]: https://docs.microsoft.com/en-us/windows-hardware/test/wpt/index
40+
[symsrv]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681416(v=vs.85).aspx

0 commit comments

Comments
 (0)