Skip to content

Symbol server support, update debug tools#56

Open
jonwis wants to merge 3 commits into
microsoft:mainfrom
jonwis:agents/auto-download-pdbs-symbol-server
Open

Symbol server support, update debug tools#56
jonwis wants to merge 3 commits into
microsoft:mainfrom
jonwis:agents/auto-download-pdbs-symbol-server

Conversation

@jonwis

@jonwis jonwis commented Jun 11, 2026

Copy link
Copy Markdown
Member

Why is this change being made?

Analyzing already-deployed binaries from build labs requires finding the PDBs from the build, downloading them, then referencing them in startup. The symbol server APIs can just do all that, making "examine binary in app directory" just that much easier.

Briefly summarize what changed

  • Symbol server support in the Open dialog. In Advanced Options, a new Symbol Server section lets you enable automatic PDB download and configure a list of symbol server paths (one per line, standard srvcachehttps://... syntax). The list is saved across sessions in %LocalAppData%\SizeBench\settings.json.
  • The "OK" button in the open dialogs is enabled when any symbol server options are selected
  • Migrate to public NuGet packages for debugger tooling

How was the change tested?

  • Tests added for open-with changes, symbol option selection, etc
  • Manual - open a binary from %windir%\system32 and see that symbols resolve correctly

jonwis and others added 2 commits June 11, 2026 12:01
- Session/DIAAdapter: when no explicit PDB path is given, use DIA's
  loadDataForExe with a symsrv-style search path to locate/download the
  PDB automatically.  Session.Create() accepts an empty pdbPath when
  SessionOptions.SymbolServerSearchPath is set.

- SessionOptions: new SymbolServerSearchPath property.

- GUI/Advanced Options expander: new Symbol Server section with a
  checkbox to enable/disable the feature, a multi-line TextBox for
  symsrv paths (one per line, joined with ';'), and the OK button
  logic updated to allow opening without a local PDB when a symbol
  server is configured.

- Settings (AppSettings / IAppSettings): persisted JSON settings at
  %LocalAppData%\SizeBench\settings.json; stores UseSymbolServer and
  the list of symbol server paths.  Registered as a Windsor singleton.

- NuGet: replace checked-in ExternalDependencies/DIA/msdia140.dll with
  Microsoft.Debugging.Platform.DbgEng (20260319.1511.0) which ships an
  up-to-date msdia140.dll.  Upgrade DbgModelApiXtn and SymSrv to the
  same version; SymSrv 20260319 is the auth-capable build (2 MB) that
  works with AAD-protected servers like symweb.azurefd.net.  DbgX kept
  at 20241011.1.0 (last version targeting net8.0-windows).

- Directory.Build.targets: copy msdia140.dll from the DbgEng NuGet
  package content rather than the now-deleted checked-in copy.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
jonwis added a commit to jonwis/SizeBench that referenced this pull request Jun 11, 2026
Brings PR microsoft#56 up to date with main (microsoft#55, microsoft#57, microsoft#58 incl. the DIA update and
net8->net10 upgrade). Conflict resolutions:
- DIAAdapter: keep the loadFromSource delegate (symbol-server path) but route
  the PDB path through main's new prefetching loadDataFromPdbEx on IDiaDataSourceEx2.
- msdia140.dll: keep main's updated checked-in binary (needed for IDiaDataSourceEx2)
  and layer PR microsoft#56's symsrv.dll drop on top for symbol-server support.
- Directory.Packages.props / GUI.csproj: union of both sides, newer versions win.
- IDE0031: use C# 14 null-conditional assignment for _appSettings?.UseSymbolServer.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant