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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
<!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=iso-8859-1">
<meta name="Author" content="Johannes Sixt">
<title>KDbg - User's Manual</title>
</head>
<body text="#000000" bgcolor="#FFFFFF">
<h1>
KDbg - User's Manual</h1>
<h2>
Contents</h2>
<ul>
<li>
<a href="#Introduction">Introduction</a></li>
<li>
<a href="#UsingKDbg">Using KDbg</a></li>
<li>
<a href="#InfoWindows">KDbg's information windows</a></li>
<li>
<a href="#Tips">Tips and such</a></li>
<li>
Advanced topic: <a href="types.html">Type tables</a></li>
<li>
<a href="invocation.html">How to invoke KDbg from the command line</a></li>
<li>
<a href="#Author">Author</a></li>
</ul>
<hr>
<h2>
<a name="Introduction"></a>Introduction</h2>
<p>KDbg is a front-end for <tt>gdb</tt>, the GNU debugger.</p>
<p>This means that KDbg itself is not the debugger. Rather, it communicates
with <tt>gdb</tt>, a command line debugger, by sending commands to it and
receiving the output, such as variable values. The menu commands and mouse
clicks are translated into <tt>gdb</tt> commands, and the output of <tt>gdb</tt>
is translated into (more or less) visible information, such as structured
variable contents.</p>
<p>The upshot of all this is that KDbg completely relies on the capabilities
of the underlying command line debugger, <tt>gdb</tt>. KDbg can do no more
than <tt>gdb</tt> can. For example, if you have a <tt>gdb</tt> that does
not supports debugging of threaded programs, KDbg cannot, either (even
though it offers a threads window).</p>
<h2>
<a name="UsingKDbg"></a>Using KDbg</h2>
<p>Before you start using KDbg, you may want to review the options in the
<a href="globaloptions.html">Global Options</a> dialog that you invoke
with <i>Settings|Global Options</i>.</p>
<h4>
Specifying a debugging target</h4>
<p>To debug a program, choose <i>File|Executable</i> from the menu. If you
have debugged the program earlier, you can choose it from <i>File|Recent
Executables</i>. The program is loaded.</p>
<p>If you want to debug a core dump, you must first load the executable
that produced the core dump, then choose
<i>File|Core Dump</i> from the
menu. Now KDbg goes to the point in the program that caused the core dump.</p>
<p>You can now set breakpoints, using the <i>Breakpoint</i> menu, the right
mouse button menu, or the <a href="breakptlist.html">breakpoint window</a>.</p>
<p>You can also choose program specific settings that apply only to the
currently loaded executable using <i>Settings|This Program</i>, in the
<a href="pgmsettings.html">Program Settings</a> dialog.</p>
<p>Furthermore, it is possible to <a href="xslt.html">debug XSLT scripts</a>.</p>
<h4>
Running the program</h4>
<p>Now run the program by selecting <i>Execution|Run</i>. The program now
executes as usual until it either exits, hits a breakpoint or watchpoint,
or receives a signal.</p>
<p>You can run the program with arguments, set a working directory, or
set environment variables. To do this, choose <i>Execution|Arguments</i>
and specify your options in the <a href="argspwdenv.html">Program Arguments</a>
dialog (before you start the program).</p>
<p>You can also attach to a program that is currently running. To do this,
first load the executable file like above. Then choose <i>Execution|Attach</i>.
From the list processes specify the one you want to attach to
and click <i>OK</i>. The running program is
halted (not terminated), and the current point of execution is displayed
in the source window.</p>
<p><font size="-1">On some systems the list of processes may not be available.
In this case a simple edit box is available where the process number can be
specified.</font></p>
<h4>
The program stopped - now what?</h4>
<p>When the program stops at a breakpoint, watchpoint, or due to a signal,
the <a href="sourcecode.html">source code window</a> displays the line
where the program stopped. It is very common that the program stops due
to a signal (usually a <tt>SIGSEGV</tt>, segmentation violation) in a function
that is not part of the program, that you have written. In this case you
investigate the <a href="stack.html">stack window</a> and look for a function
that you have written (start at the top of the list) and click on it. This
will bring you to a location that you can start your search for the real
bug.</p>
<p>In the menu <i>Execution</i> you find the commands that you need to
run
the program, step through code, and to interrupt the program (<i>Break</i>)
while it is running. The important commands (<i>Run</i> and all kinds of
<i>Step</i>) are bound to function keys. For efficient debugging it is
strongly recommend that you get used to using them. You can use
<i>Settings|Configure Shortcuts</i> if you want to bind the functions
to different keys.</p>
<p>In the menu <i>Breakpoint</i> you find commands to set, clear, disable,
and enable permanent and temporary breakpoints. You can display a list
of breakpoints in the <a href="breakptlist.html">breakpoints window</a>.
You can also set a breakpoint by clicking at the left end of the source
line (using the left mouse button), and you can enable and disable a breakpoint
by clicking it using the middle mouse button.</p>
<p>The animation in the toolbar indicates whether the program
is running. It stops when the program stopped in a breakpoint or for
some other reason or when the program exited. This animated button is a shortcut
for <i>Execution|Break</i>.</p>
<h2>
<a name="InfoWindows"></a>KDbg's information windows</h2>
<p>KDbg displays information and accepts commands in number of different windows.
In the menu <i>View</i> you find commands to show and hide these windows.
They are docking windows, which means that you can drag them around and
arrange them in any manner you like.</p>
<ul>
<li>
<a href="sourcecode.html">The source code window</a></li>
<li>
<a href="localvars.html">The local variables window</a></li>
<li>
<a href="stack.html">The stack window</a></li>
<li>
<a href="watches.html">The watched expressions window</a></li>
<li>
<a href="breakptlist.html">The breakpoint list</a></li>
<li>
<a href="pgmoutput.html">The output window</a></li>
<li>
<a href="registers.html">The register dump window</a></li>
<li>
<a href="memory.html">The memory dump window</a></li>
<li>
<a href="threads.html">The threads window</a></li>
</ul>
<h2>
<a name="Tips"></a>Tips and such</h2>
<p>The following topics give some useful hints on using KDbg.</p>
<ul>
<li>
<a href="tips.html">Tips and Tricks</a></li>
<li>
<a href="howdoi.html">How do I...?</a></li>
</ul>
<h2>
<a name="Author"></a>Author</h2>
<p>KDbg is written by <a href="mailto:j6t@kdbg.org">Johannes Sixt</a>
with contributions from these people (in no particular order):</p>
<ul>
<li>Keith Isdale</li>
<li>Ben Burton</li>
<li>Daniel Thor Kristjansson</li>
<li>Matthew Allen</li>
<li>Ron Lerech</li>
<li>Neil Butterworth</li>
<li>Thomas Sparr</li>
<li>Max Judin</li>
<li>Johnny Chan</li>
<li>Ilmar S. Habibulin</li>
</ul>
<p>KDbg homepage is at <a href="http://www.kdbg.org/">http://www.kdbg.org/</a>.</p>
</body>
</html>
|