Debugging 同一Prolog代码的两种不同行为(带调试和不带调试)

Debugging 同一Prolog代码的两种不同行为(带调试和不带调试),debugging,prolog,swi-prolog,xpce,Debugging,Prolog,Swi Prolog,Xpce,我正在使用最新的稳定版本6.6.6 64位SWI Prolog for windows。 代码如下: start :- new(Frame, frame('Test')), send(Frame, open), send(Frame, append, new(Pic, picture)), send(Pic, height, 600), send(Pic, display, new(_Ref1, text('This will disappear in 3

我正在使用最新的稳定版本6.6.6 64位SWI Prolog for windows。 代码如下:

start :-
    new(Frame, frame('Test')),
    send(Frame, open),
    send(Frame, append, new(Pic, picture)),
    send(Pic, height, 600),
    send(Pic, display, new(_Ref1, text('This will disappear in 3 seconds', center, font(screen, roman, 16)))),
    sleep(3),
    send(Pic, clear),
    sleep(3),
    send(Pic, display, new(_Ref2, text('Good bye!', center, font(screen, roman, 16)))),
    sleep(2),
    send(Pic, clear).
该守则不包括: 它创建了一个窗口和一个高度为600px的画布。 它显示一个文本,该文本应在3秒内消失, 2秒后,将出现一个新文本,该文本将在2秒内消失

如果我不调试就运行它,第一个文本将在8秒内消失,仅此而已

如果使用图形调试运行,代码将执行它应该执行的操作(请参见代码描述)


所以我担心的是:为什么同一个代码有两种不同的结果,为什么没有调试代码就不能正常工作

是因为程序的6.6.6版本吗^^这种差异是由于画布
Pic
缺少刷新造成的。因此,如果光标在图片画布上移动,则文本将消失并出现在其上;否则,文本不会消失。请注意,光标应该在画布上移动,在画布上移动不足以刷新画布。画布对象的异常行为。更新画布本身的正确代码是什么?