/// <summary> /// Constructor /// </summary> /// <param name="location">Location</param> /// <param name="module">Module or null if none</param> /// <param name="address">Address or <see cref="NoAddress"/> if it's not known</param> /// <param name="message">Warning/error message or null if none</param> /// <param name="data">Data to add to the <see cref="DbgBoundCodeBreakpoint"/> or null if nothing gets added. /// If the data implements <see cref="IDisposable"/>, it gets disposed when the bound breakpoint gets deleted.</param> public DbgBoundCodeBreakpointInfo(DbgCodeLocation location, DbgModule module, ulong address, DbgEngineBoundCodeBreakpointMessage message, T data) { Location = location ?? throw new ArgumentNullException(nameof(location)); Module = module; Address = address; Message = message; Data = data; }
/// <summary> /// Creates a bound breakpoint. This method returns null if there was no breakpoint matching <paramref name="location"/>. /// /// To get notified when a bound breakpoint gets deleted, add custom data that implements <see cref="IDisposable"/>. /// </summary> /// <typeparam name="T">Type of data</typeparam> /// <param name="location">Breakpoint location</param> /// <param name="module">Module or null if none</param> /// <param name="address">Address or <see cref="BoundBreakpointNoAddress"/> if unknown</param> /// <param name="message">Warning/error message or null if none</param> /// <param name="data">Data to add to the <see cref="DbgEngineBoundCodeBreakpoint"/> or null if nothing gets added</param> /// <returns></returns> public DbgEngineBoundCodeBreakpoint Create <T>(DbgCodeLocation location, DbgModule module, ulong address, DbgEngineBoundCodeBreakpointMessage message, T data) where T : class => Create(new[] { new DbgBoundCodeBreakpointInfo <T>(location, module, address, message, data) }).FirstOrDefault();
/// <summary> /// Updates <see cref="DbgBoundCodeBreakpoint"/> properties /// </summary> /// <param name="options">Options</param> /// <param name="module">New <see cref="DbgBoundCodeBreakpoint.Module"/> value</param> /// <param name="address">New <see cref="DbgBoundCodeBreakpoint.Address"/> value</param> /// <param name="message">New <see cref="DbgBoundCodeBreakpoint.Message"/> value</param> public abstract void Update(UpdateOptions options, DbgModule?module = null, ulong address = 0, DbgEngineBoundCodeBreakpointMessage message = default);
/// <summary> /// Creates a bound breakpoint. This method returns null if there was no breakpoint matching <paramref name="location"/>. /// /// To get notified when a bound breakpoint gets deleted, add custom data that implements <see cref="IDisposable"/>. /// </summary> /// <param name="location">Breakpoint location</param> /// <param name="module">Module or null if none</param> /// <param name="address">Address or <see cref="BoundBreakpointNoAddress"/> if unknown</param> /// <param name="message">Warning/error message or null if none</param> /// <returns></returns> public DbgEngineBoundCodeBreakpoint Create(DbgCodeLocation location, DbgModule module, ulong address, DbgEngineBoundCodeBreakpointMessage message) => Create(new[] { new DbgBoundCodeBreakpointInfo <object>(location, module, address, message, null) }).FirstOrDefault();
/// <summary> /// Updates <see cref="DbgBoundCodeBreakpoint.Message"/> /// </summary> /// <param name="message">New value</param> public void UpdateMessage(DbgEngineBoundCodeBreakpointMessage message) => Update(UpdateOptions.Message, message: message);