microsoft / ConcordExtensibilitySamples

Visual Studio Debug Engine Extensibility Samples
Other
121 stars 50 forks source link

Obtaining debug symbol paths from options #110

Closed BigEvilCorporation closed 7 months ago

BigEvilCorporation commented 7 months ago

Hi,

Is it possible to obtain the list of symbol file (.pdb) locations set via the Tools -> Options -> Debugging -> Symbols dialog? I'm working in C#.

Cheers

gregg-miskelly commented 7 months ago

Can you tell me more about your scenario? (ex: do you have a Concord component, when do you want to know the symbol path, etc)

BigEvilCorporation commented 7 months ago

I have local and remote Concord components implementing IDkmModuleInstanceLoadNotification, IDkmModuleSymbolsLoadedNotification, IDkmSymbolDocumentCollectionQuery, IDkmSymbolDocumentSpanQuery, and IDkmSymbolQuery.

I'd like to know the symbol paths during IDkmSymbolDocumentCollectionQuery.FindDocuments() and IDkmSymbolDocumentSpanQuery.FindSymbols(), so that I can search those paths for matching symbol files for the requested documents and spans.

This is for a bespoke language with a custom symbol file format, but since I'm just after a list of directories it seems best to reuse the existing settings page for this rather than muddy the waters with a new custom options page. Users know where this page is and what it's for, and it would be less ambiguous.

gregg-miskelly commented 7 months ago

First you need to obtain a DkmEngineSettings object which you can do via either the static methods DkmEngineSettings.GetSettings or DkmEngineSettings.FindSettings or if you have a process, the EngineSettings property on a DkmProcess.

From an EngineSettings, there is a SymbolPaths property that gives you access the DkmEngineSymbolSettings object that has everything.