Exemple #1
0
        public DbgHelp(ICollection <string> symbol_search_paths)
        {
            IntPtr handle = IntPtr.Add(IntPtr.Zero, 0x7ffffffe);

            DbgHelpNative.SetErrorMode(DbgHelpNative.SetErrorFlags.SEM_FAILCRITICALERRORS | DbgHelpNative.SetErrorFlags.SEM_NOOPENFILEERRORBOX);

            DbgHelpNative.SymSetOptions(DbgHelpNative.Options.SYMOPT_DEFERRED_LOADS | DbgHelpNative.Options.SYMOPT_DEBUG);

            string search_paths = null;

            if (symbol_search_paths != null && symbol_search_paths.Count > 0)
            {
                var path = new StringBuilder(1024);
                foreach (var sym in symbol_search_paths)
                {
                    if (path.Length > 0)
                    {
                        path.Append(";");
                    }
                    path.Append(sym);
                }
                search_paths = path.ToString();
            }


            if (!DbgHelpNative.SymInitialize(handle, search_paths, false))
            {
                throw new ApplicationException("Failed to initialize DbgHelp library");
            }

            m_CallbackGc = new DbgHelpNative.SymRegisterCallbackProc64(OnCallback);

            DbgHelpNative.SymRegisterCallback64(handle, m_CallbackGc, 0);

            m_Handle = handle;
        }
Exemple #2
0
    public DbgHelp(ICollection<string> symbol_search_paths)
    {
      IntPtr handle = IntPtr.Add(IntPtr.Zero, 0x7ffffffe);

      DbgHelpNative.SetErrorMode(DbgHelpNative.SetErrorFlags.SEM_FAILCRITICALERRORS | DbgHelpNative.SetErrorFlags.SEM_NOOPENFILEERRORBOX);

      DbgHelpNative.SymSetOptions(DbgHelpNative.Options.SYMOPT_DEFERRED_LOADS | DbgHelpNative.Options.SYMOPT_DEBUG);

      string search_paths = null;
      if (symbol_search_paths.Count > 0)
      {
        var path = new StringBuilder(1024);
        foreach (var sym in symbol_search_paths)
        {
          if (path.Length > 0)
            path.Append(";");
          path.Append(sym);
        }
        search_paths = path.ToString();
      }


      if (!DbgHelpNative.SymInitialize(handle, search_paths, false))
      {
        throw new ApplicationException("Failed to initialize DbgHelp library");
      }

      m_CallbackGc = new DbgHelpNative.SymRegisterCallbackProc64(OnCallback);

      DbgHelpNative.SymRegisterCallback64(handle, m_CallbackGc, 0);

      m_Handle = handle;
    }