# Why is predicate traced when using "trace, predicate." but not when using "trace." then "predicate."

**URL:** <https://swi-prolog.discourse.group/t/why-is-predicate-traced-when-using-trace-predicate-but-not-when-using-trace-then-predicate/3231>\
**Category:** Help!\
**Created:** [November 5, 2020, 7:02pm UTC](https://swi-prolog.discourse.group/t/why-is-predicate-traced-when-using-trace-predicate-but-not-when-using-trace-then-predicate/3231 "2020-11-05T19:02:22Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ericzinda](https://avatars.discourse-cdn.com/v4/letter/e/b3f665/32.png) [@ericzinda](https://swi-prolog.discourse.group/u/ericzinda)\
**Post date:** [November 5, 2020, 7:02pm UTC](https://swi-prolog.discourse.group/t/why-is-predicate-traced-when-using-trace-predicate-but-not-when-using-trace-then-predicate/3231/1 "2020-11-05T19:02:22Z")

</div>

I’m confused why I see a `call` and `exit` port for this:

```prolog
?- trace, findall(X, atom(X), Solution).
^ Call: (11) findall(_10664, atom(_10664), _10672) ? creep
^ Exit: (11) findall(_10664, user:atom(_10664), []) ? creep
Solution = [].

```

But not this:

```prolog
?- trace.
true.

[trace] ?- findall(X, atom(X), Solution).
Solution = [].

[trace] ?-

```

I thought the first was just a shortcut but tracing is behaving differently. Anyone know why?

EDIT: Even more confusing is why the first example above doesn’t show an additional `call` port for findall/4 given that the source code it is calling seems to be this:

```prolog
findall(Templ, Goal, List) :-
    findall(Templ, Goal, List, []).

findall(Templ, Goal, List, Tail) :-
    setup_call_cleanup(
        '$new_findall_bag',
        findall_loop(Templ, Goal, List, Tail),
        '$destroy_findall_bag').

```
