The Everlasting Breakpoint

I have a few source files which have a peristent breakpoint: no matter how many times I un-check the breakpoint, dirty the file, and save it, the breakpoint comes back. (2019 R1, but it’s been a bug for a long time).

I can toggle the breakpoint off, and the IDE will respect that, but only for the current session. Once I re-load the project, it returns.

Where are breakpoints saved and how can I nuke it for good?

I think it’s in the invisible uistate file that’s next to the project. Maybe delete that?

Would the menu command that turns off ALL breakpoints work for you?

If I peek at the .xojo_uistate file in a hex editor, it looks as if it’s full of function names, so I think this may indeed be where the breakpoints are stored (I think a long time ago they were stored in the source code XML or VCP files, weren’t they?)

In any case, this particular item with the breakpoint I can’t shake happens to be a Window where I renamed the class name (so On disk it’s called “Window1.xml” but in the IDE it’s called “Window3.xml” and I have two classes that have identical method names.

So I suspect this renaming is confusing the IDE.

I don’t want to lose all of my breakpoints so maybe I’ll try renaming the classes more sensibly and see if that fixes it.

in binary & xml the breakpoints are part of the UI State data that is in those project types
In VCP (text) format its a separate file so each person using a version control system could have their own and then you just dont check that in - since its breakpoints & the state the IDE was left in (open tabs windows etc)

its plausible that renaming an item means that state info isnt getting nuked as it should be when you save the next time

Thanks Norman - I have a VCP (text) project but I think these particular windows are external XML items. I’ll do more digging.

that really doesnt matter - the UI State is in the hidden .uistate file and it covers everything regardless of whether the item is internal or external binary or xml or text

Could it be that you moved your project at some point from binary to VCP, or that a part moved from one to the other, and that you have both a separate file and the uistate? And now changing it only updates the uistate but the separate file is still being used too? Just guessing