When the debugger is on, this predicate causes a trace line to be displayed for the current innermost box, with Port being the name of the port, and all other information being the current box's ones.
p :- trace_parent_port(clause1), writeln(hello), fail. p :- trace_parent_port(clause2), writeln(world). ?- p. (1) 1 CALL p %> creep (1) 1 CLAUSE1 p %> creep S (2) 2 CALL writeln(hello) %> creep hello S (2) 2 EXIT writeln(hello) %> creep (3) 2 CALL fail %> creep (3) 2 FAIL fail %> creep (1) 1 NEXT p %> creep (1) 1 CLAUSE2 p %> creep S (4) 2 CALL writeln(world) %> creep world S (4) 2 EXIT writeln(world) %> creep (1) 1 EXIT p %> creep Yes (0.00s cpu)