.. index:: single: debugger
.. _debugger/0:

.. rst-class:: right

**object**

``debugger``
============

Command-line debugger based on an extended procedure box model supporting execution tracing and spy points.

| **Availability:** 
|    ``logtalk_load(debugger(loader))``

| **Author:** Paulo Moura
| **Version:** 8:0:1
| **Date:** 2026-02-07

| **Compilation flags:**
|    ``static, context_switching_calls``


| **Implements:**
|    ``public`` :ref:`debuggerp <debuggerp/0>`
| **Provides:**
|    :ref:`logtalk::debug_handler/1 <logtalk/0::debug_handler/1>`
|    :ref:`logtalk::debug_handler/3 <logtalk/0::debug_handler/3>`
| **Uses:**
|    :ref:`logtalk <logtalk/0>`

| **Remarks:**
|    (none)

| **Inherited public predicates:**
|     :ref:`debuggerp/0::debug/0`  :ref:`debuggerp/0::debugging/0`  :ref:`debuggerp/0::debugging/1`  :ref:`debuggerp/0::leash/1`  :ref:`debuggerp/0::leashing/1`  :ref:`debuggerp/0::log/3`  :ref:`debuggerp/0::logging/3`  :ref:`debuggerp/0::nodebug/0`  :ref:`debuggerp/0::nolog/3`  :ref:`debuggerp/0::nologall/0`  :ref:`debuggerp/0::nospy/1`  :ref:`debuggerp/0::nospy/3`  :ref:`debuggerp/0::nospy/4`  :ref:`debuggerp/0::nospyall/0`  :ref:`debuggerp/0::notrace/0`  :ref:`debuggerp/0::reset/0`  :ref:`debuggerp/0::set_write_max_depth/1`  :ref:`debuggerp/0::spy/1`  :ref:`debuggerp/0::spy/3`  :ref:`debuggerp/0::spy/4`  :ref:`debuggerp/0::spying/1`  :ref:`debuggerp/0::spying/3`  :ref:`debuggerp/0::spying/4`  :ref:`debuggerp/0::trace/0`  :ref:`debuggerp/0::write_max_depth/1`  

.. contents::
   :local:
   :backlinks: top

Public predicates
-----------------

(no local declarations; see entity ancestors if any)

Protected predicates
--------------------

(no local declarations; see entity ancestors if any)

Private predicates
------------------

.. index:: debugging_/0
.. _debugger/0::debugging_/0:

``debugging_/0``
^^^^^^^^^^^^^^^^

True iff debug is on.

| **Compilation flags:**
|    ``dynamic``

| **Mode and number of proofs:**
|    ``debugging_`` - ``zero_or_one``


------------

.. index:: tracing_/0
.. _debugger/0::tracing_/0:

``tracing_/0``
^^^^^^^^^^^^^^

True iff tracing is on.

| **Compilation flags:**
|    ``dynamic``

| **Mode and number of proofs:**
|    ``tracing_`` - ``zero_or_one``


------------

.. index:: explicit_tracing_/0
.. _debugger/0::explicit_tracing_/0:

``explicit_tracing_/0``
^^^^^^^^^^^^^^^^^^^^^^^

True iff tracing is on due to a call to the trace/0 predicate.

| **Compilation flags:**
|    ``dynamic``

| **Mode and number of proofs:**
|    ``explicit_tracing_`` - ``zero_or_one``


------------

.. index:: skipping_/0
.. _debugger/0::skipping_/0:

``skipping_/0``
^^^^^^^^^^^^^^^

True iff skipping.

| **Compilation flags:**
|    ``dynamic``

| **Mode and number of proofs:**
|    ``skipping_`` - ``zero_or_one``


------------

.. index:: skipping_unleashed_/1
.. _debugger/0::skipping_unleashed_/1:

``skipping_unleashed_/1``
^^^^^^^^^^^^^^^^^^^^^^^^^

True iff skipping (a goal with invocation number ``N``) but showing intermediate ports as unleashed.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``skipping_unleashed_(N)``
| **Mode and number of proofs:**
|    ``skipping_unleashed_(?integer)`` - ``zero_or_one``


------------

.. index:: quasi_skipping_/0
.. _debugger/0::quasi_skipping_/0:

``quasi_skipping_/0``
^^^^^^^^^^^^^^^^^^^^^

True iff quasi-skipping.

| **Compilation flags:**
|    ``dynamic``

| **Mode and number of proofs:**
|    ``quasi_skipping_`` - ``zero_or_one``


------------

.. index:: leaping_/1
.. _debugger/0::leaping_/1:

``leaping_/1``
^^^^^^^^^^^^^^

True iff leaping in tracing or debugging mode.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``leaping_(Mode)``
| **Mode and number of proofs:**
|    ``leaping_(?atom)`` - ``zero_or_one``


------------

.. index:: leashing_/1
.. _debugger/0::leashing_/1:

``leashing_/1``
^^^^^^^^^^^^^^^

Table of currently leashed ports.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``leashing_(Port)``
| **Mode and number of proofs:**
|    ``leashing_(?atom)`` - ``zero_or_more``


------------

.. index:: invocation_number_/1
.. _debugger/0::invocation_number_/1:

``invocation_number_/1``
^^^^^^^^^^^^^^^^^^^^^^^^

Current call stack invocation number.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``invocation_number_(N)``
| **Mode and number of proofs:**
|    ``invocation_number_(?integer)`` - ``zero_or_one``


------------

.. index:: jump_to_invocation_number_/1
.. _debugger/0::jump_to_invocation_number_/1:

``jump_to_invocation_number_/1``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Invocation number to jump to.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``jump_to_invocation_number_(N)``
| **Mode and number of proofs:**
|    ``jump_to_invocation_number_(?integer)`` - ``zero_or_one``


------------

.. index:: zap_to_port_/1
.. _debugger/0::zap_to_port_/1:

``zap_to_port_/1``
^^^^^^^^^^^^^^^^^^

Port to zap to.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``zap_to_port_(Port)``
| **Mode and number of proofs:**
|    ``zap_to_port_(?integer)`` - ``zero_or_one``


------------

.. index:: write_max_depth_/1
.. _debugger/0::write_max_depth_/1:

``write_max_depth_/1``
^^^^^^^^^^^^^^^^^^^^^^

Current term write maximum depth.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``write_max_depth_(MaxDepth)``
| **Mode and number of proofs:**
|    ``write_max_depth_(?non_negative_integer)`` - ``zero_or_one``


------------

.. index:: log_point_/3
.. _debugger/0::log_point_/3:

``log_point_/3``
^^^^^^^^^^^^^^^^

Table of log points.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``log_point_(Entity,Line,Message)``
| **Mode and number of proofs:**
|    ``log_point_(?object_identifier,?integer,?atom)`` - ``zero_or_more``
|    ``log_point_(?category_identifier,?integer,?atom)`` - ``zero_or_more``


------------

.. index:: clause_breakpoint_/2
.. _debugger/0::clause_breakpoint_/2:

``clause_breakpoint_/2``
^^^^^^^^^^^^^^^^^^^^^^^^

Table of clause breakpoints.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``clause_breakpoint_(Entity,Line)``
| **Mode and number of proofs:**
|    ``clause_breakpoint_(?object_identifier,?integer)`` - ``zero_or_more``
|    ``clause_breakpoint_(?category_identifier,?integer)`` - ``zero_or_more``


------------

.. index:: predicate_breakpoint_/3
.. _debugger/0::predicate_breakpoint_/3:

``predicate_breakpoint_/3``
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Table of predicate breakpoints.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``predicate_breakpoint_(Functor,Arity,Original)``
| **Mode and number of proofs:**
|    ``predicate_breakpoint_(?atom,?integer,?predicate_indicator)`` - ``zero_or_more``
|    ``predicate_breakpoint_(?atom,?integer,?non_terminal_indicator)`` - ``zero_or_more``


------------

.. index:: entity_predicate_breakpoint_/4
.. _debugger/0::entity_predicate_breakpoint_/4:

``entity_predicate_breakpoint_/4``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Table of entity predicate breakpoints.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``entity_predicate_breakpoint_(Entity,Functor,Arity,Original)``
| **Mode and number of proofs:**
|    ``entity_predicate_breakpoint_(?callable,?atom,?integer,?qualified_predicate_indicator)`` - ``zero_or_more``
|    ``entity_predicate_breakpoint_(?callable,?atom,?integer,?qualified_non_terminal_indicator)`` - ``zero_or_more``


------------

.. index:: context_breakpoint_/4
.. _debugger/0::context_breakpoint_/4:

``context_breakpoint_/4``
^^^^^^^^^^^^^^^^^^^^^^^^^

Table of context breakpoints.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``context_breakpoint_(Sender,This,Self,Goal)``
| **Mode and number of proofs:**
|    ``context_breakpoint_(?object_identifier,?object_identifier,?object_identifier,?callable)`` - ``zero_or_more``


------------

.. index:: conditional_breakpoint_/3
.. _debugger/0::conditional_breakpoint_/3:

``conditional_breakpoint_/3``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Table of conditional breakpoints.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``conditional_breakpoint_(Entity,Line,Condition)``
| **Mode and number of proofs:**
|    ``conditional_breakpoint_(?object_identifier,?integer,?callable)`` - ``zero_or_more``
|    ``conditional_breakpoint_(?category_identifier,?integer,?callable)`` - ``zero_or_more``


------------

.. index:: triggered_breakpoint_/4
.. _debugger/0::triggered_breakpoint_/4:

``triggered_breakpoint_/4``
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Table of defined triggered breakpoints.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``triggered_breakpoint_(Entity,Line,TriggerEntity,TriggerLine)``
| **Mode and number of proofs:**
|    ``triggered_breakpoint_(?object_identifier,?integer,?object_identifier,?integer)`` - ``zero_or_more``
|    ``triggered_breakpoint_(?object_identifier,?integer,?category_identifier,?integer)`` - ``zero_or_more``
|    ``triggered_breakpoint_(?category_identifier,?integer,?object_identifier,?integer)`` - ``zero_or_more``
|    ``triggered_breakpoint_(?category_identifier,?integer,?category_identifier,?integer)`` - ``zero_or_more``


------------

.. index:: triggered_breakpoint_enabled_/2
.. _debugger/0::triggered_breakpoint_enabled_/2:

``triggered_breakpoint_enabled_/2``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Table of enabled triggered breakpoints.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``triggered_breakpoint_enabled_(Entity,Line)``
| **Mode and number of proofs:**
|    ``triggered_breakpoint_enabled_(?object_identifier,?integer)`` - ``zero_or_more``
|    ``triggered_breakpoint_enabled_(?category_identifier,?integer)`` - ``zero_or_more``


------------

.. index:: file_line_hit_count_/3
.. _debugger/0::file_line_hit_count_/3:

``file_line_hit_count_/3``
^^^^^^^^^^^^^^^^^^^^^^^^^^

Table of file and line hit counts (successful unifications with clause heads).

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``file_line_hit_count_(File,Line,Count)``
| **Mode and number of proofs:**
|    ``file_line_hit_count_(?atom,?integer,?integer)`` - ``zero_or_one``


------------

Operators
---------

(none)

