public SymbolServiceWrapper(IHost host) { Debug.Assert(host != null); _host = host; _symbolService = host.Services.GetService <ISymbolService>(); VTableBuilder builder = AddInterface(IID_ISymbolService, validate: false); builder.AddMethod(new IsSymbolStoreEnabledDelegate((IntPtr self) => _symbolService.IsSymbolStoreEnabled)); builder.AddMethod(new InitializeSymbolStoreDelegate(InitializeSymbolStore)); builder.AddMethod(new ParseSymbolPathDelegate(ParseSymbolPath)); builder.AddMethod(new DisplaySymbolStoreDelegate(DisplaySymbolStore)); builder.AddMethod(new DisableSymbolStoreDelegate((IntPtr self) => _symbolService.DisableSymbolStore())); builder.AddMethod(new LoadNativeSymbolsDelegate(LoadNativeSymbols)); builder.AddMethod(new LoadNativeSymbolsFromIndexDelegate(LoadNativeSymbolsFromIndex)); builder.AddMethod(new LoadSymbolsForModuleDelegate(LoadSymbolsForModule)); builder.AddMethod(new DisposeDelegate(Dispose)); builder.AddMethod(new ResolveSequencePointDelegate(ResolveSequencePoint)); builder.AddMethod(new GetLocalVariableNameDelegate(GetLocalVariableName)); builder.AddMethod(new GetLineByILOffsetDelegate(GetLineByILOffset)); builder.AddMethod(new GetExpressionValueDelegate(GetExpressionValue)); builder.AddMethod(new GetMetadataLocatorDelegate(GetMetadataLocator)); builder.AddMethod(new GetICorDebugMetadataLocatorDelegate(GetICorDebugMetadataLocator)); builder.Complete(); }
/// <summary> /// Parse the Windows sympath format /// </summary> /// <param name="symbolPath">windows symbol path</param> /// <returns>if false, failure</returns> private bool ParseSymbolPath( IntPtr self, string symbolPath) { if (string.IsNullOrWhiteSpace(symbolPath)) { return(false); } _symbolService.DisableSymbolStore(); return(_symbolService.ParseSymbolPathFixDefault(symbolPath)); }