<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml-stylesheet href="_c74_vig.xsl" type="text/xsl"?>
<vignette name="Debugging Max Patchers" package="Max">
  <metadatalist>
    <metadata name="author">Cycling '74</metadata>
    <metadata name="tag">patcher</metadata>
    <metadata name="tag">debugging</metadata>
  </metadatalist>
  <h1>Debugging Max Patchers</h1>
  <p> Data flow in a Max patcher can sometimes get extremely complex and confusing. When that happens, one
    way you can examine data flow is by using the built-in debugging tools in Max. These tools,
    which are available via the Debug Menu and also from within the contextual menu in Max, allow a
    programmer to "Step through" code and observe data flow using breakpoints and monitors.
</p>
<h2>
Tools for Monitoring Activity
</h2>
<ul>
  <li><link type="vignette" module="core" name="watchpoints">Monitor Watchpoints</link> permit you to monitor data flowing through patch cords</li>
  <li>
    <link type="vignette" module="core" name="watchpoints">Print
    Watchpoints</link> permit you to monitor data flowing through patch cords
    and display them in the <link type="vignette" module="core" name="max_window">Max Console</link>
  </li>
  <li>The <link type="vignette" module="core" name="signal_probe">signal probe</link> shows signal values flowing through audio patch cords</li>
  <li>The <link type="vignette" module="core" name="matrix_probe">matrix probe</link> shows different aspects of matrix data in Jitter matrix patch cords</li>
  <li>You can add <link type="vignette" module="core" name="data_monitoring_objects">data monitoring objects</link> to a patch to observe or capture data</li>
</ul>
<h2>
Tools for Observing Patch Execution
</h2>
<ul>
  <li><link type="vignette" module="core" name="watchpoints">Break Watchpoints</link> stop the execution of a patch at a specific place, permitting you to step through it</li>
  <li>The <link type="vignette" module="core" name="tracing_tools">debug window</link> provides information about the current execution "stack"</li>
</ul>
  <seealsolist>
    <seealso name="basicchapter05" module="max" type="tutorial" />
    <seealso name="error_messages" module="core" type="vignette" />
  </seealsolist>
</vignette>
