You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.7 KiB
71 lines
2.7 KiB
<html>
|
|
|
|
<head>
|
|
<title>How Breakpoints Work</title>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1 align="center">How Breakpoints Work</h1>
|
|
<!--INDEX "How Breakpoints Work" -->
|
|
|
|
<hr>
|
|
|
|
<p>Breakpoints are set using the <a href="c_t.htm">'t'</a>, <a href="c_t.htm">'to'</a>, <a
|
|
href="c_b.htm">'b'</a>, <a href="c_g.htm">'g'</a> or <a href="c_c.htm">'c'</a> commands.
|
|
The 't', 'to', 'g', and 'c' commands set temporary breakpoints that are automatically
|
|
deleted when execution halts. The 'b' command set persistent breakpoints that must be
|
|
explicitly deleted (using the <a href="c_db.htm">'db'</a> command).</p>
|
|
|
|
<p>When the user types a 'b' command to set a breakpoint the <a href="mondef.htm">Monitor</a>
|
|
decides which type of breakpoint to utilize using the following algorithm:</p>
|
|
|
|
<pre>
|
|
|
|
if (is_writeable(addr)) bptype = RAM;
|
|
|
|
else if (is_cacheable(addr) && cpu_has_ilock) bptype = ILOCK;
|
|
|
|
else if (cpu_has_hwbp) bptype = HW;
|
|
|
|
else error();
|
|
|
|
</pre>
|
|
|
|
<p>This information is saved in an array. When execution is started, the Monitor walks
|
|
through the breakpoint array and implements the breakpoints using the following rules:
|
|
|
|
<dl>
|
|
<dt><b>RAM</b> </dt>
|
|
<dd>Replace the instruction at the specified address with a "break"
|
|
instruction and save the previous contents (the instruction) so that it can
|
|
be restored when execution halts. </dd>
|
|
<dt> </dt>
|
|
<dt><b>ILOCK</b> </dt>
|
|
<dd>Use the Icache locking feature to lock a "break" instruction into
|
|
the Icache at the specified address.</dd>
|
|
<dt> </dt>
|
|
<dt><b>HW</b> </dt>
|
|
<dd>Program the hardware breakpoint register to generate an exception when execution
|
|
reaches the specified address.</dd>
|
|
</dl>
|
|
|
|
<p>When an exception is encountered, the processor passes control to the Exception Vector.
|
|
The Monitor then restores the previous contents of all breakpoints, and transfers control
|
|
to the Shell.</p>
|
|
|
|
<p>Thus, if the memory is inspected, the break instructions will never be seen, as they
|
|
are only present in memory during execution of the application program.</p>
|
|
|
|
<p>The only exception to this is if the program hangs in such a way as to require the user
|
|
to press reset on the target system. In this case the Monitor will "forget" that
|
|
breakpoints had been set, and you will see any RAM breakpoints as break instructions in
|
|
memory. At this point the application program must be re-downloaded to obtain correct
|
|
execution.</p>
|
|
|
|
<hr>
|
|
<p> <b>Navigation:</b> <a href="pmon.htm">Document Home</a> | <a href="doctoc.htm">Document
|
|
Contents</a> | <a href="docindex.htm">Document Index</a> </p>
|
|
<p><!--$Id: brkpts.htm,v 1.1.1.1 2006/09/14 01:59:06 root Exp $ --></p>
|
|
</body>
|
|
</html>
|
|
|