The default visualizers are generic predicates to display FDBG
events (see FDBG Events) in a well readable form. These visualizers
naturally don't exploit any problem specific information--to have more
"fancy" output, you have to write your own visualizers; see FDBG Writing Visualizers. To use these visualizers, pass them in the
appropriate argument to fdbg_on/1
; see FDBG Options, or
call them directly from user defined visualizers.
fdbg_show(
+Constraint,
+Actions)
<fdvar_1>#=0 fdvar_1 = {0} Constraint exited.
Here, we can see an arithmetical constraint being woken. It narrows
fdvar_1
to a domain consisting of the singleton value 0, and
since this is the narrowest domain possible, the constraint doesn't have
anything more to do: it exits.
Note that when you pass fdbg_show/2
as an option, you should omit
the two arguments, like in
fdbg_on([..., constraint_hook(fdbg_show), ...]).
fdbg_label_show(
+Event,
+LabelID,
+Variable)
fdbg_show/2
. Each
labeling event produces a single line of output, some of them are
followed by an empty line, some others are always followed by another
labeling action and therefore the empty line is omitted. Here is a
sample output of fdbg_label_show/3
:
Labeling [9, <list_1>]: starting in range 0..3. Labeling [9, <list_1>]: step: <list_1> = 0
What we see here is the following:
Labeling
identifies the event.
<list_1>
) identifies the variable
currently being labeled. Note that several identification numbers might
belong to the same variable, depending on the mode of labeling.
step
step
mode labeling
indomain_up
enum
mode labeling or a direct call to indomain/1
indomain_down
enum,down
mode labeling
bisect
bisect
mode labeling
dual
Note that when you pass fdbg_label_show/3
as an option, you
should omit the three arguments, like in
fdbg_on([..., labeling_hook(fdbg_label_show), ...]).