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; }
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; }