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();
        }
示例#2
0
 /// <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));
 }