.. 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:** 7:10:0
| **Date:** 2025-03-18

| **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:: 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:: breakpoint_/2
.. _debugger/0::breakpoint_/2:

``breakpoint_/2``
^^^^^^^^^^^^^^^^^

Table of unconditional breakpoints.

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

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


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

.. index:: spying_predicate_/3
.. _debugger/0::spying_predicate_/3:

``spying_predicate_/3``
^^^^^^^^^^^^^^^^^^^^^^^

Table of predicate spy points.

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

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


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

.. index:: spying_context_/4
.. _debugger/0::spying_context_/4:

``spying_context_/4``
^^^^^^^^^^^^^^^^^^^^^

Table of context spy points.

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

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


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

.. 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:: 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)

