hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Free Software" and "Free Software Needs
Free Documentation", with the Front-Cover Texts being "A GNU Manual,"
and with the Back-Cover Texts as in (a) below.
 
(a) The FSF's Back-Cover Text is: "You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Debugging with GDB: Debug Session</title>
 
<meta name="description" content="Debugging with GDB: Debug Session">
<meta name="keywords" content="Debugging with GDB: Debug Session">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Remote-Stub.html#Remote-Stub" rel="up" title="Remote Stub">
<link href="Configurations.html#Configurations" rel="next" title="Configurations">
<link href="Bootstrapping.html#Bootstrapping" rel="previous" title="Bootstrapping">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Debug-Session"></a>
<div class="header">
<p>
Previous: <a href="Bootstrapping.html#Bootstrapping" accesskey="p" rel="previous">Bootstrapping</a>, Up: <a href="Remote-Stub.html#Remote-Stub" accesskey="u" rel="up">Remote Stub</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Putting-It-All-Together"></a>
<h4 class="subsection">20.5.3 Putting It All Together</h4>
 
<a name="index-remote-serial-debugging-summary"></a>
<p>In summary, when your program is ready to debug, you must follow these
steps.
</p>
<ol>
<li> Make sure you have defined the supporting low-level routines
(see <a href="Bootstrapping.html#Bootstrapping">What You Must Do for the Stub</a>):
<div class="display">
<pre class="display"><code>getDebugChar</code>, <code>putDebugChar</code>,
<code>flush_i_cache</code>, <code>memset</code>, <code>exceptionHandler</code>.
</pre></div>
 
</li><li> Insert these lines in your program&rsquo;s startup code, before the main
procedure is called:
 
<div class="smallexample">
<pre class="smallexample">set_debug_traps();
breakpoint();
</pre></div>
 
<p>On some machines, when a breakpoint trap is raised, the hardware
automatically makes the PC point to the instruction after the
breakpoint.  If your machine doesn&rsquo;t do that, you may need to adjust
<code>handle_exception</code> to arrange for it to return to the instruction
after the breakpoint on this first invocation, so that your program
doesn&rsquo;t keep hitting the initial breakpoint instead of making
progress.
</p>
</li><li> For the 680x0 stub only, you need to provide a variable called
<code>exceptionHook</code>.  Normally you just use:
 
<div class="smallexample">
<pre class="smallexample">void (*exceptionHook)() = 0;
</pre></div>
 
<p>but if before calling <code>set_debug_traps</code>, you set it to point to a
function in your program, that function is called when
<code><small>GDB</small></code> continues after stopping on a trap (for example, bus
error).  The function indicated by <code>exceptionHook</code> is called with
one parameter: an <code>int</code> which is the exception number.
</p>
</li><li> Compile and link together: your program, the <small>GDB</small> debugging stub for
your target architecture, and the supporting subroutines.
 
</li><li> Make sure you have a serial connection between your target machine and
the <small>GDB</small> host, and identify the serial port on the host.
 
</li><li> Download your program to your target machine (or get it there by
whatever means the manufacturer provides), and start it.
 
</li><li> Start <small>GDB</small> on the host, and connect to the target
(see <a href="Connecting.html#Connecting">Connecting to a Remote Target</a>).
 
</li></ol>
 
<hr>
<div class="header">
<p>
Previous: <a href="Bootstrapping.html#Bootstrapping" accesskey="p" rel="previous">Bootstrapping</a>, Up: <a href="Remote-Stub.html#Remote-Stub" accesskey="u" rel="up">Remote Stub</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
 
 
 
</body>
</html>