Moved from one development build to another and now graphical debugger can't find sources

I just moved to the latest development build: 8.3.22_1 from an older one: 8.3.22 this morning and the project I’ve been using is having trouble setting breakpoints using Prolog/Break At in the graphical debugger. Some predicates successfully set breakpoints and others just say “failed to set breakpoint” in the graphical debugger status bar.

I’m also noticing that, as I step through in the debugger, it is not consistently finding source files and just showing decompiled source sometimes.

It seems like both might be due to trouble finding sources?

I tried Tool/Clear Source Cache from the graphical debugger and it still doesn’t work.

Any ideas?

The messages “failed to set breakpoint” and the debugger showing decompiled code are strongly related. Both tell you that relating the compiled code to the source doesn’t work. I’m a little surprised as I don’t think the current version is any any worse than the old. Well, there may be one exception: the new “moved unification”

p(X) :- X = f(Y), ....

Is simply rewritten as

p(f(Y)) :- ...

I think that is not yet dealt with by the debugger. Could that be the issue?

Possibly. Turns out I do use the pattern of foo(XArg) :- arg(X, Meta) = XArg quite a bit in this project because I felt like it made this ugly pattern I need for carrying metadata easier to read.

I’ve been using Prolog/Spy as a workaround for now.

Here is an example of a place where I used to be able to set a breakpoint: by putting the cursor right before task_be_v_there__ex and choosing Prolog/Break at. In the latest build that doesn’t work:

task_be_v_there__ex(EventIDArg, Context) :- arg(_, _) = EventIDArg, htnMethod([], Context,
    if([
        getContext(abduce),
        argStructure(EventIDArg, [tree(req, idTarget, []), tree(opt, idStativeEvent, [])]),
        d_be_v_there__ex(EventIDArg, WhatIDArg, arg(eval, term)), arg(WhatID, _) = WhatIDArg,
        getPropertyValue(abd, WhatID, _, idAbductible, true),
        isInstance(WhatID)
    ]),
    do([opMessage(description, WhatID), moveAbductibleInstances([WhatID])]) ).