können Sie versuchen, protocol/1 zu verwenden, dann durch leash(-all),trace
bearbeiten eine Lösung Präfix beginnen Ihre Abfrage-Datei zu ändern, auf Rückzieher: I in einem Modul (vielleicht namens trace_protocol retten würde: (?) -) und würde dann mit ?- [trace_protocol].
verwenden und anschließend ?- trace,trace_protocol(append(X,Y,[1,2,3])).
:- meta_predicate trace_protocol(0).
trace_protocol :-
Name = trace_protocol_index,
catch(nb_getval(Name, N), _Exc, nb_setval(Name, 0)),
% writeln(ex:Exc),
nb_current(Name, N),
% writeln(nb_current(Name, N)),
M is N+1, nb_setval(Name, M),
% writeln(nb_setval(Name, M)),
format(atom(PN), '~s_~d.tty', [Name, N]),
% writeln(trace_protocol:PN),
protocol(PN).
trace_protocol(Q) :- trace_protocol, forall(Q, trace_protocol).
Es dauerte Code viel, scheint da ein Fehler in nb_current/2 ist. Sollte nicht, aber es wirft eine Ausnahme - tatsächlich wird die Ausnahme aus der Bibliothek (clpfd) geworfen, auch wenn das nicht direkt in meinem Testmodul enthalten ist.
Die fortlaufend nummeriert * .tty Dateien am besten in Terminal angezeigt werden, zum Beispiel
$ cat *.tty
seit Sequenzen Escape-Formatierung TTY geben. Vielleicht könnten solche Sequenzen mit ?- set_prolog_flag(color_term, false).
abgelehnt werden Danke! Das hat funktioniert! Nur dass ich am Ende 'noprotocol' hinzufügen musste, um die Konsolenausgabe auf die Datei zu übertragen. – absolutelydevastated
Ist es möglich, die Zieldatei, in der ich die Konsolenausgabe drucke, bei jeder anderen Lösung zu ändern? – absolutelydevastated
nein, ich glaube nicht, dass es einfach ist ... Sie könnten versuchen, den Abfrageprozess zu "fahren" und das Protokoll/1 beim Zurückverfolgen aufzurufen, vielleicht einen Zeitstempel hinzufügend. Lassen Sie mich den Code zeigen, aber Sie müssen testen ... – CapelliC