/usr/share/doc/racket/drracket/debugger.html is in racket-doc 6.1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>1.8 Graphical Debugging Interface</title><link rel="stylesheet" type="text/css" href="../scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="../racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="../manual-racket.css" title="default"/><link rel="stylesheet" type="text/css" href="../doc-site.css" title="default"/><script type="text/javascript" src="../scribble-common.js"></script><script type="text/javascript" src="../manual-racket.js"></script><script type="text/javascript" src="../doc-site.js"></script><script type="text/javascript" src="../local-redirect/local-redirect.js"></script><script type="text/javascript" src="../local-redirect/local-user-redirect.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="doc-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,"tocview_0");">►</a></td><td></td><td><a href="index.html" class="tocviewlink" data-pltdoc="x">Dr<span class="mywbr"> </span>Racket:<span class="mywbr"> </span> The Racket Programming Environment</a></td></tr></table></div><div class="tocviewsublisttop" style="display: none;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1 </td><td><a href="interface-essentials.html" class="tocviewselflink" data-pltdoc="x">Interface Essentials</a></td></tr><tr><td align="right">2 </td><td><a href="languages.html" class="tocviewlink" data-pltdoc="x">Languages</a></td></tr><tr><td align="right">3 </td><td><a href="Interface_Reference.html" class="tocviewlink" data-pltdoc="x">Interface Reference</a></td></tr><tr><td align="right">4 </td><td><a href="extending-drracket.html" class="tocviewlink" data-pltdoc="x">Extending Dr<span class="mywbr"> </span>Racket</a></td></tr><tr><td align="right"></td><td><a href="doc-index.html" class="tocviewlink" data-pltdoc="x">Index</a></td></tr></table></div></div><div class="tocviewlist"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,"tocview_1");">▼</a></td><td>1 </td><td><a href="interface-essentials.html" class="tocviewlink" data-pltdoc="x">Interface Essentials</a></td></tr></table><div class="tocviewsublist" style="display: block;" id="tocview_1"><table cellspacing="0" cellpadding="0"><tr><td align="right">1.1 </td><td><a href="buttons.html" class="tocviewlink" data-pltdoc="x">Buttons</a></td></tr><tr><td align="right">1.2 </td><td><a href="choose-language.html" class="tocviewlink" data-pltdoc="x">Choosing a Language</a></td></tr><tr><td align="right">1.3 </td><td><a href="editor.html" class="tocviewlink" data-pltdoc="x">Editing with Parentheses</a></td></tr><tr><td align="right">1.4 </td><td><a href="Searching.html" class="tocviewlink" data-pltdoc="x">Searching</a></td></tr><tr><td align="right">1.5 </td><td><a href="Tabbed_Editing.html" class="tocviewlink" data-pltdoc="x">Tabbed Editing</a></td></tr><tr><td align="right">1.6 </td><td><a href="interactions-window.html" class="tocviewlink" data-pltdoc="x">The Interactions Window</a></td></tr><tr><td align="right">1.7 </td><td><a href="Graphical_Syntax.html" class="tocviewlink" data-pltdoc="x">Graphical Syntax</a></td></tr><tr><td align="right">1.8 </td><td><a href="" class="tocviewselflink" data-pltdoc="x">Graphical Debugging Interface</a></td></tr><tr><td align="right">1.9 </td><td><a href="module-browser.html" class="tocviewlink" data-pltdoc="x">The Module Browser</a></td></tr><tr><td align="right">1.10 </td><td><a href="color-scheme.html" class="tocviewlink" data-pltdoc="x">Color Schemes</a></td></tr><tr><td align="right">1.11 </td><td><a href="create-exe.html" class="tocviewlink" data-pltdoc="x">Creating Executables</a></td></tr><tr><td align="right">1.12 </td><td><a href="follow-log.html" class="tocviewlink" data-pltdoc="x">Following Log Messages</a></td></tr></table></div></div><div class="tocviewlist"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,"tocview_2");">►</a></td><td>1.8 </td><td><a href="" class="tocviewselflink" data-pltdoc="x">Graphical Debugging Interface</a></td></tr></table><div class="tocviewsublistbottom" style="display: none;" id="tocview_2"><table cellspacing="0" cellpadding="0"><tr><td align="right">1.8.1 </td><td><a href="#%28part._.Debugger_.Buttons%29" class="tocviewlink" data-pltdoc="x">Debugger Buttons</a></td></tr><tr><td align="right">1.8.2 </td><td><a href="#%28part._.Definitions_.Window_.Actions%29" class="tocviewlink" data-pltdoc="x">Definitions Window Actions</a></td></tr><tr><td align="right">1.8.3 </td><td><a href="#%28part._.Stack_.View_.Pane%29" class="tocviewlink" data-pltdoc="x">Stack View Pane</a></td></tr><tr><td align="right">1.8.4 </td><td><a href="#%28part._.Debugging_.Multiple_.Files%29" class="tocviewlink" data-pltdoc="x">Debugging Multiple Files</a></td></tr></table></div></div></div><div class="tocsub"><div class="tocsubtitle">On this page:</div><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber">1.8.1<tt> </tt></span><a href="#%28part._.Debugger_.Buttons%29" class="tocsubseclink" data-pltdoc="x">Debugger Buttons</a></td></tr><tr><td><span class="tocsublinknumber">1.8.2<tt> </tt></span><a href="#%28part._.Definitions_.Window_.Actions%29" class="tocsubseclink" data-pltdoc="x">Definitions Window Actions</a></td></tr><tr><td><span class="tocsublinknumber">1.8.3<tt> </tt></span><a href="#%28part._.Stack_.View_.Pane%29" class="tocsubseclink" data-pltdoc="x">Stack View Pane</a></td></tr><tr><td><span class="tocsublinknumber">1.8.4<tt> </tt></span><a href="#%28part._.Debugging_.Multiple_.Files%29" class="tocsubseclink" data-pltdoc="x">Debugging Multiple Files</a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="navsettop"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, "6.1", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">top</a></span><span class="navright"> <a href="Graphical_Syntax.html" title="backward to "1.7 Graphical Syntax"" data-pltdoc="x">← prev</a> <a href="interface-essentials.html" title="up to "1 Interface Essentials"" data-pltdoc="x">up</a> <a href="module-browser.html" title="forward to "1.9 The Module Browser"" data-pltdoc="x">next →</a></span> </div><h4 x-source-module="(lib "scribblings/drracket/drracket.scrbl")" x-part-tag=""debugger"">1.8<tt> </tt><a name="(part._debugger)"></a>Graphical Debugging Interface</h4><blockquote class="refpara"><blockquote class="refcolumn"><blockquote class="refcontent"><p><span style="font-weight: bold">Tip:</span> Changing the name of a file in the middle of
a debugging session will prevent the debugger from working properly on
that file.</p></blockquote></blockquote></blockquote><p>Like the <span class="ssansserif">Run</span> button, the <a name="(idx._(gentag._33._(lib._scribblings/drracket/drracket..scrbl)))"></a><span class="ssansserif">Debug</span> button
runs the program in the definitions window. However, instead of
simply running it from start to finish, it lets users control and
observe the program as it executes. The interface includes a panel of
buttons above the definitions window, as well as extensions to the
definitions window itself.</p><p>The program starts out paused just before the first expression is
executed. This is indicated in the definitions window by the presence
of a green triangle over this expression’s left parenthesis.</p><h5 x-source-module="(lib "scribblings/drracket/drracket.scrbl")" x-part-tag=""Debugger_Buttons"">1.8.1<tt> </tt><a name="(part._.Debugger_.Buttons)"></a>Debugger Buttons</h5><p>While execution is paused, several buttons are available:</p><ul><li><p>The <a name="(idx._(gentag._34._(lib._scribblings/drracket/drracket..scrbl)))"></a><span class="ssansserif">Go</span> button is enabled
whenever the program is paused. It causes the program to resume
until it either completes, reaches a breakpoint, or raises an
unhandled exception.</p></li><li><p>The <a name="(idx._(gentag._35._(lib._scribblings/drracket/drracket..scrbl)))"></a><span class="ssansserif">Step</span> button is enabled whenever
the program is paused. It causes the program to make a single step
and then pause again.</p></li><li><p>The <a name="(idx._(gentag._36._(lib._scribblings/drracket/drracket..scrbl)))"></a><span class="ssansserif">Over</span> button is only enabled when
execution is paused at the start of an expression that is not in tail
position. It sets a one-time breakpoint at the end of the
expression (represented by a yellow circle) and causes the program to
proceed. When execution reaches the one-time breakpoint, it pauses
and removes that breakpoint.</p></li><li><p>The <a name="(idx._(gentag._37._(lib._scribblings/drracket/drracket..scrbl)))"></a><span class="ssansserif">Out</span> button is only enabled when
execution is paused within the context of another expression. Like
the <span class="ssansserif">Over</span> button, it sets a one-time breakpoint and
continues execution. In this case, the program stops upon returning
to the context or raising an unhandled exception.</p></li></ul><p>If the program is running (not paused), then only the <a name="(idx._(gentag._38._(lib._scribblings/drracket/drracket..scrbl)))"></a>Pause
button will be enabled. Clicking it will interrupt execution and
pause it. In this case, the current expression may only be known
approximately, and it will be represented as a gray triangle. The
other features described above will still be available.</p><p>At any time, execution may be interrupted by clicking the
<span class="ssansserif">Stop</span> button. However, unlike with the <span class="ssansserif">Pause</span>
button, stopped execution cannot be continued.</p><h5 x-source-module="(lib "scribblings/drracket/drracket.scrbl")" x-part-tag=""Definitions_Window_Actions"">1.8.2<tt> </tt><a name="(part._.Definitions_.Window_.Actions)"></a>Definitions Window Actions</h5><p>When execution is paused, the definitions window supports several
additional actions:</p><ul><li><p>Hovering the mouse cursor over a parenthesis may reveal a
pink circle. If so, right-clicking or control-clicking (Mac OS X)
will open a menu with options to <span class="ssansserif">Pause at this point</span> or
<span class="ssansserif">Continue to this point</span>. The former sets an ordinary
breakpoint at that location; the latter sets a one-time breakpoint and
resumes execution. An ordinary breakpoint appears as a red circle,
and a one-time breakpoint appears as a yellow circle.</p><p><span style="font-weight: bold">Tip:</span> If the debugged program is not a module, then the
<span style="font-style: italic">first time</span> it is debugged, breakpoints will only become
available in expressions as they are evaluated. However, the next
time the program is debugged, the debugger will remember the set of
breakable locations from the previous session.</p><p><span style="font-weight: bold">Tip:</span> Clicking the <span class="ssansserif">Run</span> button after a debugging
session will cause all breakpoints to disappear from the definitions
window. These breakpoints are not forgotten, and clicking
<span class="ssansserif">Debug</span> again will restore them. However, breakpoints do
<span style="font-style: italic">not</span> persist across restarts of DrRacket.</p></li><li><p>If execution is paused at the start of an expression, then
right-clicking or control-clicking (Mac OS X) on the green triangle
opens a menu with the option to <span class="ssansserif">Skip expression...</span>.
Selecting this opens a text box in which to enter a value for the
expression. The expression is skipped, with the entered value
substituted for it.</p></li><li><p>If execution is paused at the end of an expression, then the
expression and its value are displayed to the left of the button bar.
Right-clicking or control-clicking (Mac OS X) on the green triangle
opens a menu with options to <span class="ssansserif">Print return value to console</span>
and <span class="ssansserif">Change return value...</span>. The former displays the return
value in the interactions window; the latter opens a text box in which
to enter a substitute value.</p></li><li><p>Hovering the mouse cursor over a bound variable displays the
variable’s name and value to the right of the button bar.
Right-clicking or control-clicking (Mac OS X) opens a menu with
options to <span class="ssansserif">Print value of <var> to console</span> or
<span class="ssansserif">(set! <var> ...)</span>. The former displays the variable’s value
in the interactions window; the latter opens a text box in which to
enter a new value for the variable.</p></li></ul><h5 x-source-module="(lib "scribblings/drracket/drracket.scrbl")" x-part-tag=""Stack_View_Pane"">1.8.3<tt> </tt><a name="(part._.Stack_.View_.Pane)"></a>Stack View Pane</h5><p>In addition, while execution is paused, the stack view pane at the
right of the DrRacket frame is active. The top of the pane shows a
list of active stack frames. Mousing over a frame produces a faint
green highlighting of the corresponding expression. Clicking on the
frame selects that frame, which makes its lexical variables visible.
The selected frame is indicated by a bold font.</p><p>The bottom of the pane shows the lexical variables in the selected
stack frame.</p><p>The following screenshot illustrates several aspects of the debugger
interface. The red circle before the <span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=if.html%23%2528form._%2528%2528quote._%7E23%7E25kernel%2529._if%2529%2529&version=6.1" class="RktStxLink Sq" data-pltdoc="x">if</a></span> is a breakpoint,
and the green triangle at the end of the <span class="RktPn">(</span><span class="RktSym">fact</span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym"><a href="http://download.racket-lang.org/docs/6.1/html/local-redirect/index.html?doc=reference&rel=generic-numbers.html%23%2528def._%2528%2528quote._%7E23%7E25kernel%2529._sub1%2529%2529&version=6.1" class="RktValLink Sq" data-pltdoc="x">sub1</a></span><span class="stt"> </span><span class="RktSym">n</span><span class="RktPn">)</span><span class="RktPn">)</span> is where
execution is currently paused. The expression’s return value is
displayed at the left of the button bar, and the value of <span class="RktSym">n</span>
is displayed in the stack view pane.</p><blockquote class="SCentered"><p><img src="debugger1.png" alt="" width="351" height="158"/></p></blockquote><h5 x-source-module="(lib "scribblings/drracket/drracket.scrbl")" x-part-tag=""Debugging_Multiple_Files"">1.8.4<tt> </tt><a name="(part._.Debugging_.Multiple_.Files)"></a>Debugging Multiple Files</h5><p>To debug a program that spans several files, make sure that all of the
files are open in DrRacket. Click the <span class="ssansserif">Debug</span> button in the
window containing the main program. As this program loads additional
files that are present in other windows or tabs, message boxes will
pop up asking whether or not to include the file in the debugging
session. Including the file means that it will be possible to set
breakpoints, inspect variables, and single-step in that file.</p><p><span style="font-weight: bold">Tip:</span> A file may only be involved in one debugging session at a
time. If you try to debug a file that loads another file that is
already being debugged, a message box will pop up explaining that the
file cannot be included in another debugging session.</p><div class="navsetbottom"><span class="navleft"><form class="searchform"><input class="searchbox" style="color: #888;" type="text" value="...search manuals..." title="Enter a search string to search the manuals" onkeypress="return DoSearchKey(event, this, "6.1", "../");" onfocus="this.style.color="black"; this.style.textAlign="left"; if (this.value == "...search manuals...") this.value="";" onblur="if (this.value.match(/^ *$/)) { this.style.color="#888"; this.style.textAlign="center"; this.value="...search manuals..."; }"/></form> <a href="../index.html" title="up to the documentation top" data-pltdoc="x" onclick="return GotoPLTRoot("6.1");">top</a></span><span class="navright"> <a href="Graphical_Syntax.html" title="backward to "1.7 Graphical Syntax"" data-pltdoc="x">← prev</a> <a href="interface-essentials.html" title="up to "1 Interface Essentials"" data-pltdoc="x">up</a> <a href="module-browser.html" title="forward to "1.9 The Module Browser"" data-pltdoc="x">next →</a></span> </div></div></div><div id="contextindicator"> </div></body></html>
|