mame/docs/source/debugger/exceptionpoint.rst
AJR d8d588262d Debugger changes
- Added exception points as a new class of "points" triggering on specific exception numbers, with a similar set of commands to breakpoints and registerpoints.
- Removed the per-instruction callback hook from device_debug. Only one driver was using this (rmnimbus.cpp), and what it was doing with it could be done more cleanly with exception points.
- Change the type of the action string parameter for "points"-creating methods and make some parameters optional for those.
- Change trace file logging to use a std::ostream instead of FILE * to take better advantage of strformat.
2022-08-28 13:31:50 -04:00

134 lines
3.4 KiB
ReStructuredText

.. _debugger-exceptionpoint-list:
Exception Point Debugger Commands
=================================
:ref:`debugger-command-epset`
sets a new exception point
:ref:`debugger-command-epclear`
clears a specific exception point or all exception points
:ref:`debugger-command-epdisable`
disables a specific exception point or all exception points
:ref:`debugger-command-epenable`
enables a specific exception point or all exception points
:ref:`debugger-command-eplist`
lists exception points
Exception points halt execution and activate the debugger when
a CPU raises a particular exception number.
.. _debugger-command-epset:
epset
-----
**ep[set] <type>[,<condition>[,<action>]]**
Sets a new exception point for exceptions of type **<type>**. The
optional **<condition>** parameter lets you specify an expression that
will be evaluated each time the exception point is hit. If the result
of the expression is true (non-zero), the exception point will actually
halt execution at the start of the exception handler; otherwise,
execution will continue with no notification. The optional **<action>**
parameter provides a command that is executed whenever the exception
point is hit and the **<condition>** is true. Note that you may need to
embed the action within braces ``{ }`` in order to prevent commas and
semicolons from being interpreted as applying to the ``epset`` command
itself.
The numbering of exceptions depends upon the CPU type. Causes of
exceptions may include internally or externally vectored interrupts,
errors occurring within instructions and system calls.
Each exception point that is set is assigned an index which can be used
in other exception point commands to reference this exception point.
Examples:
``ep 2``
Set an exception that will halt execution whenever the visible CPU
raises exception number 2.
Back to :ref:`debugger-exceptionpoint-list`
.. _debugger-command-epclear:
epclear
-------
**epclear [<epnum>[,…]]**
The epclear command clears exception points. If **<epnum>** is
specified, only the requested exception points are cleared, otherwise
all exception points are cleared.
Examples:
``epclear 3``
Clear exception point index 3.
``epclear``
Clear all exception points.
Back to :ref:`debugger-exceptionpoint-list`
.. _debugger-command-epdisable:
epdisable
---------
**epdisable [<epnum>[,…]]**
The epdisable command disables exception points. If **<epnum>** is
specified, only the requested exception points are disabled, otherwise
all exception points are disabled. Note that disabling an exception
point does not delete it, it just temporarily marks the exception
point as inactive.
Examples:
``epdisable 3``
Disable exception point index 3.
``epdisable``
Disable all exception points.
Back to :ref:`debugger-exceptionpoint-list`
.. _debugger-command-epenable:
epenable
--------
**epenable [<epnum>[,…]]**
The epenable command enables exception points. If **<epnum>** is
specified, only the requested exception points are enabled, otherwise
all exception points are enabled.
Examples:
``epenable 3``
Enable exception point index 3.
``epenable``
Enable all exception points.
Back to :ref:`debugger-exceptionpoint-list`
.. _debugger-command-eplist:
eplist
------
**eplist**
The eplist command lists all the current exception points, along with
their index and any conditions or actions attached to them.
Back to :ref:`debugger-exceptionpoint-list`