This is a problem of both x32 and x64 dbg
Windows 10 x64
After debugging a program loaded at certain address apace (e.g. 0x00400000), and using hardware breakpoints, those breakpoints are saved into the database file.
However if I debug that program at the later date and it is loaded into a different Address space (e.g. 0x00800000), those saved (absolute address) hardware breakpoints are no longer valid. Worse still I cannot delete those old hardware breakpoints, the debugger just displays an error saying "address doesn't exist"
I can recommend turn off ASLR (at your own risk) or set DYNAMICBASE in compiler to something fixed like 0x30000000 or set "relocation stripped" flag in PE header.
Are these hardware breakpoints placed inside module code?
No sorry I should have been clearer
It has only happened when hwbp are placed in DLLs loaded by the exe, therefore very likely to change base address if reloaded
yes that's what I thought.
It works for software breakpoints but the hardware breakpoints get stuck.
I will try and get a screenshot
I realize what was happening...
If the DLL hasn not yet been loaded then the breakpoints (hardware/software) cannot be deleted.
The debug registers remain empty though
I guess it no big deal...though it would be helpful to be able to delete them whenever
its probably not your priority
Maybe you could add an option to hide breakpoints of DLLs that have not yet been loaded?
@winkerbie that's what the 'Status' is for. It should show 'Inactive' however I do plan to add support for deleting breakpoints that don't exist yet but at the moment I'm quite busy so I cannot.