blob: ce786de2e76910cbed9ef01fe59bac2802c28cdf [file] [log] [blame]
Jason Molendac09b8b92011-10-22 02:31:42 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
5<link href="style.css" rel="stylesheet" type="text/css" />
Eli Friedmane31493a2011-12-07 22:09:43 +00006<title>LLDB to GDB Command Map</title>
Jason Molendac09b8b92011-10-22 02:31:42 +00007</head>
8
9<body>
10 <div class="www_title">
11 The <strong>LLDB</strong> Debugger
12 </div>
Jason Molendaa2f701f2011-10-25 01:28:31 +000013
Jason Molendac09b8b92011-10-22 02:31:42 +000014<div id="container">
Jason Molendaa2f701f2011-10-25 01:28:31 +000015 <div id="content">
Jason Molendac09b8b92011-10-22 02:31:42 +000016 <!--#include virtual="sidebar.incl"-->
Jason Molendaa2f701f2011-10-25 01:28:31 +000017 <div id="middle">
18 <div class="post">
Jason Molendac09b8b92011-10-22 02:31:42 +000019
Jason Molenda7cbdc322012-10-05 05:31:01 +000020 <h1 class ="postheader">GDB to LLDB Command Map</h1>
Jason Molendaa2f701f2011-10-25 01:28:31 +000021 <div class="post">
22
Jason Molenda62fa8772012-10-05 04:28:33 +000023 <p>Below is a table of GDB commands with the LLDB counterparts.
Enrico Granata79aaca02012-05-14 21:39:38 +000024 The built in GDB-compatibility aliases in LLDB are also
Jason Molenda62fa8772012-10-05 04:28:33 +000025 listed. The full lldb command names are often long, but any
Jason Molenda54107f22012-10-05 04:29:13 +000026 unique short form can be used. Instead of "<b>breakpoint set</b>",
27 "<b>br se</b>" is also acceptable.</p>
Jason Molendac09b8b92011-10-22 02:31:42 +000028 </div>
Jason Molendaa2f701f2011-10-25 01:28:31 +000029 <div class="postfooter"></div>
Jason Molendac09b8b92011-10-22 02:31:42 +000030
Jason Molendaa2f701f2011-10-25 01:28:31 +000031 <h1 class ="postheader">Execution Commands</h1>
32 <div class="post">
Jason Molendac09b8b92011-10-22 02:31:42 +000033
34 <p>
35
Jason Molendaa2f701f2011-10-25 01:28:31 +000036 <table class="stats" width="620" cellspacing="0">
Jason Molendac09b8b92011-10-22 02:31:42 +000037 <tr>
Jason Molendac09b8b92011-10-22 02:31:42 +000038 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +000039 <td class="hed" width="50%">LLDB</td>
Jason Molendac09b8b92011-10-22 02:31:42 +000040 </tr>
41
42 <tr><td class="header" colspan="2">Launch a process no arguments.</td></tr>
43 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +000044 <b>(gdb)</b> run<br>
45 <b>(gdb)</b> r
46 </td>
47 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +000048 <b>(lldb)</b> process launch<br>
49 <b>(lldb)</b> run<br>
50 <b>(lldb)</b> r
51 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +000052 </tr>
53
Jason Molendaa2f701f2011-10-25 01:28:31 +000054
Jason Molendac09b8b92011-10-22 02:31:42 +000055 <tr><td class="header" colspan="2">Launch a process with arguments <code>&lt;args&gt;</code>.</td></tr>
56 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +000057 <b>(gdb)</b> run &lt;args&gt;<br>
58 <b>(gdb)</b> r &lt;args&gt;
59 </td>
Jason Molenda704506b2012-10-05 04:26:06 +000060 <td class="content">
61 <b>(lldb)</b> process launch -- &lt;args&gt;<br>
62 <b>(lldb)</b> r &lt;args&gt;
63 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +000064 </tr>
65
66 <tr><td class="header" colspan="2">Launch a process for with arguments <b><code>a.out 1 2 3</code></b> without having to supply the args every time.</td></tr>
67 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +000068 <b>%</b> gdb --args a.out 1 2 3<br>
69 <b>(gdb)</b> run<br>
70 ...<br>
71 <b>(gdb)</b> run<br>
72 ...<br>
73 </td>
Jason Molenda704506b2012-10-05 04:26:06 +000074 <td class="content">
75 <b>%</b> lldb -- a.out 1 2 3<br>
76 <b>(lldb)</b> run<br>
77 ...<br>
78 <b>(lldb)</b> run<br>
79 ...<br>
80 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +000081 </tr>
82
83 <tr><td class="header" colspan="2">Launch a process with arguments in new terminal window (Mac OS X only).</td></tr>
84 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +000085 </td>
86 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +000087 <b>(lldb)</b> process launch --tty -- &lt;args&gt;<br>
88 <b>(lldb)</b> pro la -t -- &lt;args&gt;<br>
Jason Molendac09b8b92011-10-22 02:31:42 +000089 </td>
90 </tr>
91
92 <tr><td class="header" colspan="2">Launch a process with arguments in existing terminal <cope>/dev/ttys006</code> (Mac OS X only).</td></tr>
93 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +000094 </td>
95 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +000096 <b>(lldb)</b> process launch --tty=/dev/ttys006 -- &lt;args&gt;<br>
97 <b>(lldb)</b> pro la -t/dev/ttys006 -- &lt;args&gt;<br>
Jason Molendac09b8b92011-10-22 02:31:42 +000098 </td>
99 </tr>
100
Jason Molenda19113d62012-12-06 22:10:27 +0000101 <tr><td class="header" colspan="2">Set environment variables for process before launching.</td></tr>
102 <td class="content">
103 <b>(gdb)</b> set env DEBUG 1<br>
104 </td>
105 <td class="content">
106 <b>(lldb)</b> settings set target.env-vars DEBUG=1<br>
107 <b>(lldb)</b> set se target.env-vars DEBUG=1<br>
Greg Claytona53efae2013-02-12 18:54:34 +0000108 <b>(lldb)</b> env DEBUG=1<br>
Jason Molenda19113d62012-12-06 22:10:27 +0000109 </td>
110 </tr>
111
112 <tr><td class="header" colspan="2">Set environment variables for process and launch process in one command.</td></tr>
113 <td class="content">
114 </td>
115 <td class="content">
116 <b>(lldb)</b> process launch -v DEBUG=1<br>
117 </td>
118 </tr>
119
Jason Molendac09b8b92011-10-22 02:31:42 +0000120 <tr><td class="header" colspan="2">Attach to a process with process ID 123.</td></tr>
121 <tr>
122 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000123 <b>(gdb)</b> attach 123
Jason Molendac09b8b92011-10-22 02:31:42 +0000124 </td>
125 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000126 <b>(lldb)</b> process attach --pid 123<br>
127 <b>(lldb)</b> attach -p 123
Jason Molendac09b8b92011-10-22 02:31:42 +0000128 </td>
129 </tr>
130
131 <tr><td class="header" colspan="2">Attach to a process named "a.out".</td></tr>
132 <tr>
133 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000134 <b>(gdb)</b> attach a.out
Jason Molendac09b8b92011-10-22 02:31:42 +0000135 </td>
136 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000137 <b>(lldb)</b> process attach --name a.out<br>
138 <b>(lldb)</b> pro at -n a.out
Jason Molendac09b8b92011-10-22 02:31:42 +0000139 </td>
140 </tr>
141
142 <tr><td class="header" colspan="2">Wait for a process named "a.out" to launch and attach.</td></tr>
143 <tr>
144 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000145 <b>(gdb)</b> attach -waitfor a.out
Jason Molendac09b8b92011-10-22 02:31:42 +0000146 </td>
147 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000148 <b>(lldb)</b> process attach --name a.out --waitfor<br>
149 <b>(lldb)</b> pro at -n a.out -w
Jason Molendac09b8b92011-10-22 02:31:42 +0000150 </td>
151 </tr>
152
Jason Molenda4e8570b2012-09-26 22:42:25 +0000153 <tr><td class="header" colspan="2">Attach to a remote gdb protocol server running on system "eorgadd", port 8000.</td></tr>
154 <tr>
155 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000156 <b>(gdb)</b> target remote eorgadd:8000
Jason Molenda4e8570b2012-09-26 22:42:25 +0000157 </td>
158 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000159 <b>(lldb)</b> gdb-remote eorgadd:8000
Jason Molenda4e8570b2012-09-26 22:42:25 +0000160 </td>
161 </tr>
162
163 <tr><td class="header" colspan="2">Attach to a remote gdb protocol server running on the local system, port 8000.</td></tr>
164 <tr>
165 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000166 <b>(gdb)</b> target remote localhost:8000
Jason Molenda4e8570b2012-09-26 22:42:25 +0000167 </td>
168 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000169 <b>(lldb)</b> gdb-remote 8000
Jason Molenda4e8570b2012-09-26 22:42:25 +0000170 </td>
171 </tr>
172
173 <tr><td class="header" colspan="2">Attach to a Darwin kernel in kdp mode on system "eorgadd".</td></tr>
174 <tr>
175 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000176 <b>(gdb)</b> kdp-reattach eorgadd
Jason Molenda4e8570b2012-09-26 22:42:25 +0000177 </td>
178 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000179 <b>(lldb)</b> kdp-remote eorgadd
Jason Molenda4e8570b2012-09-26 22:42:25 +0000180 </td>
181 </tr>
182
Jason Molendac09b8b92011-10-22 02:31:42 +0000183 <tr><td class="header" colspan="2">Do a source level single step in the currently selected thread.</td></tr>
184 <tr>
185 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000186 <b>(gdb)</b> step<br>
187 <b>(gdb)</b> s
188 </td>
189 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000190 <b>(lldb)</b> thread step-in<br>
191 <b>(lldb)</b> step<br>
192 <b>(lldb)</b> s
193 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000194 </tr>
195
196
197 <tr><td class="header" colspan="2">Do a source level single step over in the currently selected thread.</td></tr>
198 <tr>
199 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000200 <b>(gdb)</b> next<br>
201 <b>(gdb)</b> n
202 </td>
203 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000204 <b>(lldb)</b> thread step-over<br>
205 <b>(lldb)</b> next<br>
206 <b>(lldb)</b> n<br>
207 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000208 </tr>
209
210 <tr><td class="header" colspan="2">Do an instruction level single step in the currently selected thread.</td></tr>
211 <tr>
212 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000213 <b>(gdb)</b> stepi<br>
214 <b>(gdb)</b> si
215 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000216 <td class="content">
217 <b>(lldb)</b> thread step-inst<br>
218 <b>(lldb)</b> si<br>
219 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000220 </tr>
221
222 <tr><td class="header" colspan="2">Do an instruction level single step over in the currently selected thread.</td></tr>
223 <tr>
224 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000225 <b>(gdb)</b> nexti<br>
226 <b>(gdb)</b> ni
227 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000228 <td class="content">
229 <b>(lldb)</b> thread step-inst-over<br>
230 <b>(lldb)</b> ni
231 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000232 </tr>
233
234 <tr><td class="header" colspan="2">Step out of the currently selected frame.</td></tr>
235 <tr>
236 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000237 <b>(gdb)</b> finish<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000238 </td>
239 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000240 <b>(lldb)</b> thread step-out<br>
241 <b>(lldb)</b> finish<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000242 </td>
243 </tr>
244
Jim Inghamd4418072013-02-20 23:38:37 +0000245 <tr><td class="header" colspan="2">Return immediately from the currently selected frame, with an optional return value.</td></tr>
246 <tr>
247 <td class="content">
248 <b>(gdb)</b> return &lt;RETURN EXPRESSION&gt;<br>
249 </td>
250 <td class="content">
251 <b>(lldb)</b> thread return &lt;RETURN EXPRESSION&gt;<br>
252 </td>
253 </tr>
254
Jason Molendaa2f701f2011-10-25 01:28:31 +0000255 <tr><td class="header" colspan="2">Backtrace and disassemble every time you stop.</td></tr>
256 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000257 <td class="content">
258 </td>
259 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000260 <b>(lldb)</b> target stop-hook add<br>
261 Enter your stop hook command(s). Type 'DONE' to end.<br>
262 &gt; bt<br>
263 &gt; disassemble --pc<br>
264 &gt; DONE<br>
265 Stop hook #1 added.<br>
266 </td>
267 </tr>
268
269 </table>
270 <p>
271 </div>
272 <div class="postfooter"></div>
273
274 <h1 class ="postheader">Breakpoint Commands</h1>
275 <div class="post">
276
277 <p>
278
279 <table class="stats" width="620" cellspacing="0">
280 <tr>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000281 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000282 <td class="hed" width="50%">LLDB</td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000283 </tr>
284
285 <tr><td class="header" colspan="2">Set a breakpoint at all functions named <b>main</b>.</td></tr>
286 <tr>
287 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000288 <b>(gdb)</b> break main
289 </td>
290 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000291 <b>(lldb)</b> breakpoint set --name main<br>
292 <b>(lldb)</b> br s -n main<br>
293 <b>(lldb)</b> b main
294 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000295 </tr>
296
297 <tr><td class="header" colspan="2">Set a breakpoint in file <b>test.c</b> at line <b>12</b>.</td></tr>
298 <tr>
299 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000300 <b>(gdb)</b> break test.c:12
301 </td>
302 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000303 <b>(lldb)</b> breakpoint set --file test.c --line 12<br>
304 <b>(lldb)</b> br s -f test.c -l 12<br>
305 <b>(lldb)</b> b test.c:12
306 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000307 </tr>
308
309 <tr><td class="header" colspan="2">Set a breakpoint at all C++ methods whose basename is <b>main</b>.</td></tr>
310 <tr>
311 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000312 <b>(gdb)</b> break main<br>
313 <i>(Hope that there are no C funtions named <b>main</b>)</i>.
314 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000315 <td class="content">
316 <b>(lldb)</b> breakpoint set --method main<br>
317 <b>(lldb)</b> br s -M main<br>
318 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000319 </tr>
320
Greg Claytone90903a2012-02-16 02:10:58 +0000321 <tr><td class="header" colspan="2">Set a breakpoint at and object C function: <b>-[NSString stringWithFormat:]</b>.</td></tr>
322 <tr>
323 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000324 <b>(gdb)</b> break -[NSString stringWithFormat:]<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000325 </td>
326 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000327 <b>(lldb)</b> breakpoint set --name "-[NSString stringWithFormat:]"<br>
328 <b>(lldb)</b> b -[NSString stringWithFormat:]<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000329 </td>
330 </tr>
331
Jason Molendaa2f701f2011-10-25 01:28:31 +0000332 <tr><td class="header" colspan="2">Set a breakpoint at all Objective C methods whose selector is <b>count</b>.</td></tr>
333 <tr>
334 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000335 <b>(gdb)</b> break count<br>
336 <i>(Hope that there are no C or C++ funtions named <b>count</b>)</i>.
337 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000338 <td class="content">
339 <b>(lldb)</b> breakpoint set --selector count<br>
340 <b>(lldb)</b> br s -S count<br>
341 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000342 </tr>
Jim Inghame1280682012-10-18 21:54:05 +0000343 <tr><td class="header" colspan="2">Set a breakpoint by regular expression on function name.</td></tr>
344
345 <tr>
346 <td class="content">
347 <b>(gdb)</b> rbreak regular-expression<br>
348 </td>
349 <td class="content">
Greg Clayton9d1ac6a2012-12-19 00:15:34 +0000350 <b>(lldb)</b> breakpoint set --func-regex regular-expression<br>
Jim Inghame1280682012-10-18 21:54:05 +0000351 <b>(lldb)</b> br s -r regular-expression<br>
352 </td>
353 </tr>
354
Jim Ingham0772b532013-02-14 19:17:49 +0000355 <tr><td class="header" colspan="2">Ensure that breakpoints by file and line work for #included .c/.cpp/.m files.</td></tr>
356
357 <tr>
358 <td class="content">
359 <b>(gdb)</b> b foo.c:12<br>
360 </td>
361 <td class="content">
362 <b>(lldb)</b> settings set target.inline-breakpoint-strategy always<br>
363 <b>(lldb)</b> br s -f foo.c -l 12<br>
364 </td>
365 </tr>
366
Jim Inghame1280682012-10-18 21:54:05 +0000367 <tr><td class="header" colspan="2">Set a breakpoint by regular expression on source file contents.</td></tr>
368
369 <tr>
370 <td class="content">
371 <b>(gdb)</b> shell grep -e -n pattern source-file<br>
372 <b>(gdb)</b> break source-file:CopyLineNumbers<br>
373 </td>
374 <td class="content">
375 <b>(lldb)</b> breakpoint set --source-pattern regular-expression --file SourceFile<br>
376 <b>(lldb)</b> br s -p regular-expression -f file<br>
377 </td>
378 </tr>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000379
Sean Callanancaf4da92012-01-04 21:20:39 +0000380 <tr><td class="header" colspan="2">List all breakpoints.</td></tr>
381 <tr>
382 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000383 <b>(gdb)</b> info break<br>
Sean Callanancaf4da92012-01-04 21:20:39 +0000384 </td>
385 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000386 <b>(lldb)</b> breakpoint list<br>
387 <b>(lldb)</b> br l<br>
Sean Callanancaf4da92012-01-04 21:20:39 +0000388 </td>
389 </tr>
390
391 <tr><td class="header" colspan="2">Delete a breakpoint.</td></tr>
392 <tr>
393 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000394 <b>(gdb)</b> delete 1<br>
Sean Callanancaf4da92012-01-04 21:20:39 +0000395 </td>
396 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000397 <b>(lldb)</b> breakpoint delete 1<br>
398 <b>(lldb)</b> br del 1<br>
Sean Callanancaf4da92012-01-04 21:20:39 +0000399 </td>
400 </tr>
401
Jason Molendaa2f701f2011-10-25 01:28:31 +0000402 </table>
403 <p>
404 </div>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000405 <div class="postfooter"></div>
406
407 <h1 class ="postheader">Watchpoint Commands</h1>
408 <div class="post">
409
410 <p>
411
412 <table class="stats" width="620" cellspacing="0">
413 <tr>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000414 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000415 <td class="hed" width="50%">LLDB</td>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000416 </tr>
417
418 <tr><td class="header" colspan="2">Set a watchpoint on a variable when it is written to.</td></tr>
419 <tr>
420 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000421 <b>(gdb)</b> watch global_var
Johnny Chen48e8dde2012-03-16 00:44:02 +0000422 </td>
423 <td class="content">
Jason Molendada2be4e2012-10-05 20:25:53 +0000424 <b>(lldb)</b> watchpoint set variable global_var<br>
425 <b>(lldb)</b> wa s v global_var<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000426 </td>
427 </tr>
428
429 <tr><td class="header" colspan="2">Set a watchpoint on a memory location when it is written into. The size of the region to watch for defaults to the pointer size if no '-x byte_size' is specified.
430 This command takes raw input, evaluated as an expression returning an unsigned integer pointing to the start of the region, after the '--' option terminator.</td></tr>
431 <tr>
432 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000433 <b>(gdb)</b> watch -location g_char_ptr
434 </td>
435 <td class="content">
Jason Molendae2477452012-10-05 20:28:11 +0000436 <b>(lldb)</b> watchpoint set expression -- my_ptr<br>
Jason Molendada2be4e2012-10-05 20:25:53 +0000437 <b>(lldb)</b> wa s e -- my_ptr<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000438 </td>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000439 </tr>
440
441 <tr><td class="header" colspan="2">Set a condition on a watchpoint</b>.</td></tr>
442 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000443 <td class="content">
444 </td>
445 <td class="content">
Jason Molendae2477452012-10-05 20:28:11 +0000446 <b>(lldb)</b> watch set var global<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000447 <b>(lldb)</b> watchpoint modify -c '(global==5)'<br>
448 <b>(lldb)</b> c<br>
449 ...<br>
450 <b>(lldb)</b> bt<br>
451 * thread #1: tid = 0x1c03, 0x0000000100000ef5 a.out`modify + 21 at main.cpp:16, stop reason = watchpoint 1<br>
452 frame #0: 0x0000000100000ef5 a.out`modify + 21 at main.cpp:16<br>
453 frame #1: 0x0000000100000eac a.out`main + 108 at main.cpp:25<br>
454 frame #2: 0x00007fff8ac9c7e1 libdyld.dylib`start + 1<br>
455 <b>(lldb)</b> frame var global<br>
456 (int32_t) global = 5<br>
457 </td>
458 </tr>
459
460 <tr><td class="header" colspan="2">List all watchpoints.</td></tr>
461 <tr>
462 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000463 <b>(gdb)</b> info break<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000464 </td>
465 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000466 <b>(lldb)</b> watchpoint list<br>
467 <b>(lldb)</b> watch l<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000468 </td>
469 </tr>
470
471 <tr><td class="header" colspan="2">Delete a watchpoint.</td></tr>
472 <tr>
473 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000474 <b>(gdb)</b> delete 1<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000475 </td>
476 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000477 <b>(lldb)</b> watchpoint delete 1<br>
478 <b>(lldb)</b> watch del 1<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000479 </td>
480 </tr>
481
482 </table>
483 <p>
484 </div>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000485
486 <div class="postfooter"></div>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000487 <h1 class ="postheader">Examining Variables</h1>
488 <div class="post">
489 <p>
490 <table class="stats" width="620" cellspacing="0">
491 <tr>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000492 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000493 <td class="hed" width="50%">LLDB</td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000494 </tr>
495
496 <tr><td class="header" colspan="2">Show the arguments and local variables for the current frame.</td></tr>
497 <tr>
498 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000499 <b>(gdb)</b> info args<br>
500 and<br>
501 <b>(gdb)</b> info locals<br>
502 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000503 <td class="content">
504 <b>(lldb)</b> frame variable<br>
Jason Molendada2be4e2012-10-05 20:25:53 +0000505 <b>(lldb)</b> fr v<br>
Jason Molenda704506b2012-10-05 04:26:06 +0000506 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000507 </tr>
508
509 <tr><td class="header" colspan="2">Show the local variables for the current frame.</td></tr>
510 <tr>
511 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000512 <b>(gdb)</b> info locals<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000513 </td>
514 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000515 <b>(lldb)</b> frame variable --no-args<br>
516 <b>(lldb)</b> fr v -a<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000517 </td>
518 </tr>
519
520 <tr><td class="header" colspan="2">Show the contents of local variable "bar".</td></tr>
521 <tr>
522 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000523 <b>(gdb)</b> p bar<br>
524 </td>
525 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000526 <b>(lldb)</b> frame variable bar <br>
527 <b>(lldb)</b> fr v bar <br>
528 <b>(lldb)</b> p bar <br>
529 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000530 </tr>
531
532 <tr><td class="header" colspan="2">Show the contents of local variable "bar" formatted as hex.</td></tr>
533 <tr>
534 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000535 <b>(gdb)</b> p/x bar<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000536 </td>
537 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000538 <b>(lldb)</b> frame variable --format x bar <br>
539 <b>(lldb)</b> fr v -f x bar <br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000540 </td>
541 </tr>
542
543 <tr><td class="header" colspan="2">Show the contents of global variable "baz".</td></tr>
544 <tr>
545 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000546 <b>(gdb)</b> p baz<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000547 </td>
548 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000549 <b>(lldb)</b> target variable baz <br>
550 <b>(lldb)</b> ta v baz <br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000551 </td>
552 </tr>
553
554 <tr><td class="header" colspan="2">Show the global/static variables defined in the current source file.</td></tr>
555 <tr>
556 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000557 n/a<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000558 </td>
559 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000560 <b>(lldb)</b> target variable <br>
561 <b>(lldb)</b> ta v <br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000562 </td>
563 </tr>
564
Jason Molendaa0a10d02011-10-25 01:28:56 +0000565 <tr><td class="header" colspan="2">Display a the variable "argc" and "argv" every time you stop.</td></tr>
Jason Molendac09b8b92011-10-22 02:31:42 +0000566 <tr>
567 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000568 <b>(gdb)</b> display argc<br>
569 <b>(gdb)</b> display argv<br>
570 </td>
571 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000572 <b>(lldb)</b> target stop-hook add --one-liner "frame variable argc argv"<br>
573 <b>(lldb)</b> ta st a -o "fr v argc argv"<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000574 <b>(lldb)</b> display argc<br>
575 <b>(lldb)</b> display argv<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000576 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000577 </tr>
578
579 <tr><td class="header" colspan="2">Display a the variable "argc" and "argv" only when you stop in the function named <b>main</b>.</td></tr>
580 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000581 <td class="content">
582 </td>
583 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000584 <b>(lldb)</b> target stop-hook add --name main --one-liner "frame variable argc argv"<br>
585 <b>(lldb)</b> ta st a -n main -o "fr v argc argv"<br>
586 </td>
587 </tr>
588
589 <tr><td class="header" colspan="2">Display the variable "*this" only when you stop in c class named <b>MyClass</b>.</td></tr>
590 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000591 <td class="content">
592 </td>
593 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000594 <b>(lldb)</b> target stop-hook add --classname MyClass --one-liner "frame variable *this"<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000595 <b>(lldb)</b> ta st a -c MyClass -o "fr v *this"<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000596 </td>
597 </tr>
598
599 </table>
600 <p>
601 </div>
Jason Molendac09b8b92011-10-22 02:31:42 +0000602
Jim Ingham41609db2012-08-24 22:56:40 +0000603
604
605
606 <h1 class ="postheader">Evaluating expressions</h1>
607 <div class="post">
608 <p>
609 <table class="stats" width="620" cellspacing="0">
610 <tr>
Jim Ingham41609db2012-08-24 22:56:40 +0000611 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000612 <td class="hed" width="50%">LLDB</td>
Jim Ingham41609db2012-08-24 22:56:40 +0000613 </tr>
614
615 <tr><td class="header" colspan="2">Evaluating a generalized expression in the current frame.</td></tr>
616 <tr>
617 <td class="content">
Jim Ingham41609db2012-08-24 22:56:40 +0000618 <b>(gdb)</b> print (int) printf ("Print nine: %d.", 4 + 5)<br>
619 or if you don't want to see void returns: <br>
620 <b>(gdb)</b> call (int) printf ("Print nine: %d.", 4 + 5)<br>
621 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000622 <td class="content">
623 <b>(lldb)</b> expr (int) printf ("Print nine: %d.", 4 + 5)<br>
624 or using the print alias:<br>
625 <b>(lldb)</b> print (int) printf ("Print nine: %d.", 4 + 5)<br>
626 </td>
Jim Ingham41609db2012-08-24 22:56:40 +0000627 </tr>
628
Jim Inghamd21d8aa2012-10-25 17:35:53 +0000629 <tr><td class="header" colspan="2">Creating and assigning a value to a convenience variable.</td></tr>
630 <tr>
631 <td class="content">
632 <b>(gdb)</b> set $foo = 5<br>
633 <b>(gdb)</b> set variable $foo = 5<br>
634 or using the print command <br>
635 <b>(gdb)</b> print $foo = 5<br>
636 or using the call command <br>
637 <b>(gdb)</b> call $foo = 5<br>
638 and if you want to specify the type of the variable:
639 <b>(gdb)</b> set $foo = (unsigned int) 5<br>
640
641 </td>
642 <td class="content">
643 In lldb you evaluate a variable declaration expression as you would write it in C:<br>
644 <b>(lldb)</b> expr unsigned int $foo = 5<br>
645 </td>
646 </tr>
647
Jim Ingham41609db2012-08-24 22:56:40 +0000648 <tr><td class="header" colspan="2">Printing the ObjC "description" of an object.</td></tr>
649 <tr>
650 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000651 <b>(gdb)</b> po [SomeClass returnAnObject]<br>
652 </td>
653 <td class="content">
Jim Ingham41609db2012-08-24 22:56:40 +0000654 <b>(lldb)</b> expr -o -- [SomeClass returnAnObject]<br>
655 or using the po alias:<br>
656 <b>(lldb)</b> po [SomeClass returnAnObject]<br>
657 </td>
Jim Ingham41609db2012-08-24 22:56:40 +0000658 </tr>
659
660 <tr><td class="header" colspan="2">Print the dynamic type of the result of an expression.</td></tr>
661 <tr>
662 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000663 <b>(gdb)</b> set print object 1<br>
664 <b>(gdb)</b> p someCPPObjectPtrOrReference<br>
665 only works for C++ objects.<br>
666 </td>
667 <td class="content">
Jim Ingham41609db2012-08-24 22:56:40 +0000668 <b>(lldb)</b> expr -d 1 -- [SomeClass returnAnObject]<br>
669 <b>(lldb)</b> expr -d 1 -- someCPPObjectPtrOrReference<br>
670 or set dynamic type printing to be the default:
671 <b>(lldb)</b> settings set target.prefer-dynamic run-target<br>
672 </td>
Jim Ingham41609db2012-08-24 22:56:40 +0000673 </tr>
674
Jim Ingham9a579ee2012-11-15 19:13:33 +0000675 <tr><td class="header" colspan="2">Calling a function so you can stop at a breakpoint in the function.</td></tr>
676 <tr>
677 <td class="content">
678 <b>(gdb)</b> set unwindonsignal 0<br>
679 <b>(gdb)</b> p function_with_a_breakpoint()<br>
680 </td>
681 <td class="content">
Jim Inghamdf7a41d2013-01-15 02:57:33 +0000682 <b>(lldb)</b> expr -i 0 -- function_with_a_breakpoint()<br>
683 </td>
684 </tr>
685
686 <tr><td class="header" colspan="2">Calling a function that crashes, and stopping when the function crashes.</td></tr>
687 <tr>
688 <td class="content">
689 <b>(gdb)</b> set unwindonsignal 0<br>
690 <b>(gdb)</b> p function_which_crashes()<br>
691 </td>
692 <td class="content">
693 <b>(lldb)</b> expr -u 0 -- function_which_crashes()<br>
Jim Ingham9a579ee2012-11-15 19:13:33 +0000694 </td>
695 </tr>
696
Jim Ingham41609db2012-08-24 22:56:40 +0000697
698 </table>
699 <p>
700 </div>
701
Jason Molendaa2f701f2011-10-25 01:28:31 +0000702 <h1 class ="postheader">Examining Thread State</h1>
703 <div class="post">
Jason Molendac09b8b92011-10-22 02:31:42 +0000704 <p>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000705 <table class="stats" width="620" cellspacing="0">
Jason Molendac09b8b92011-10-22 02:31:42 +0000706 <tr>
Jason Molendac09b8b92011-10-22 02:31:42 +0000707 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000708 <td class="hed" width="50%">LLDB</td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000709 </tr>
710
Jason Molendac09b8b92011-10-22 02:31:42 +0000711
712 <tr><td class="header" colspan="2">Show the stack backtrace for the current thread.</td></tr>
713 <tr>
714 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000715 <b>(gdb)</b> bt<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000716 </td>
717 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000718 <b>(lldb)</b> thread backtrace<br>
719 <b>(lldb)</b> bt<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000720 </td>
721 </tr>
722
723 <tr><td class="header" colspan="2">Show the stack backtraces for all threads.</td></tr>
724 <tr>
725 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000726 <b>(gdb)</b> thread apply all bt
Jason Molendac09b8b92011-10-22 02:31:42 +0000727 </td>
728 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000729 <b>(lldb)</b> thread backtrace all<br>
730 <b>(lldb)</b> bt all
Jason Molendac09b8b92011-10-22 02:31:42 +0000731 </td>
732 </tr>
733
Jason Molendab856a452012-10-26 23:56:03 +0000734 <tr><td class="header" colspan="2">Backtrace the first five frames of the current thread.</td></tr>
Jason Molenda6021b242012-10-26 23:52:49 +0000735 <tr>
736 <td class="content">
737 <b>(gdb)</b> bt 5
738 </td>
739 <td class="content">
740 <b>(lldb)</b> thread backtrace -c 5<br>
Jason Molendab856a452012-10-26 23:56:03 +0000741 <b>(lldb)</b> bt 5 (<i>lldb-169 and later</i>)<br>
742 <b>(lldb)</b> bt -c 5 (<i>lldb-168 and earlier</i>)
Jason Molenda6021b242012-10-26 23:52:49 +0000743 </td>
744 </tr>
745
Jason Molendac09b8b92011-10-22 02:31:42 +0000746 <tr><td class="header" colspan="2">Select a different stack frame by index for the current thread.</td></tr>
747 <tr>
748 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000749 <b>(gdb)</b> frame 12
Jason Molendac09b8b92011-10-22 02:31:42 +0000750 </td>
751 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000752 <b>(lldb)</b> frame select 12<br>
Jason Molendada2be4e2012-10-05 20:25:53 +0000753 <b>(lldb)</b> fr s 12<br>
754 <b>(lldb)</b> f 12<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000755 </td>
756 </tr>
757
Johnny Chen2c2d5732012-03-21 18:14:37 +0000758 <tr><td class="header" colspan="2">List information about the currently selected frame in the current thread.</td></tr>
759 <tr>
760 <td class="content">
Johnny Chen2c2d5732012-03-21 18:14:37 +0000761 </td>
762 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000763 <b>(lldb)</b> frame info<br>
Johnny Chen2c2d5732012-03-21 18:14:37 +0000764 </td>
765 </tr>
766
Jason Molendac09b8b92011-10-22 02:31:42 +0000767 <tr><td class="header" colspan="2">Select the stack frame that called the current stack frame.</td></tr>
768 <tr>
769 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000770 <b>(gdb)</b> up
Jason Molendac09b8b92011-10-22 02:31:42 +0000771 </td>
772 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000773 <b>(lldb)</b> up<br>
774 <b>(lldb)</b> frame select --relative=1<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000775 </td>
776 </tr>
777
778 <tr><td class="header" colspan="2">Select the stack frame that is called by the current stack frame.</td></tr>
779 <tr>
780 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000781 <b>(gdb)</b> down
782 </td>
783 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000784 <b>(lldb)</b> down<br>
785 <b>(lldb)</b> frame select --relative=-1<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000786 <b>(lldb)</b> fr s -r-1<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000787 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000788 </tr>
789
790 <tr><td class="header" colspan="2">Select a different stack frame using a relative offset.</td></tr>
791 <tr>
792 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000793 <b>(gdb)</b> up 2<br>
794 <b>(gdb)</b> down 3<br>
795 </td>
796 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000797 <b>(lldb)</b> frame select --relative 2<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000798 <b>(lldb)</b> fr s -r2<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000799 <br>
800 <b>(lldb)</b> frame select --relative -3<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000801 <b>(lldb)</b> fr s -r-3<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000802 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000803 </tr>
804
805 <tr><td class="header" colspan="2">Show the general purpose registers for the current thread.</td></tr>
806 <tr>
807 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000808 <b>(gdb)</b> info registers<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000809 </td>
810 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000811 <b>(lldb)</b> register read<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000812 </td>
813 </tr>
814
Greg Clayton3499e182012-10-17 20:58:52 +0000815 <tr><td class="header" colspan="2">Write a new decimal value '123' to the current thread register 'rax'.</td></tr>
816 <tr>
817 <td class="content">
818 <b>(gdb)</b> p $rax = 123<br>
819 </td>
820 <td class="content">
821 <b>(lldb)</b> register write rax 123<br>
822 </td>
823 </tr>
824
825 <tr><td class="header" colspan="2">Skip 8 bytes ahead of the current program counter (instruction pointer). Note that we use backticks to evaluate an expression and insert the scalar result in LLDB.</td></tr>
826 <tr>
827 <td class="content">
828 <b>(gdb)</b> jump *$pc+8<br>
829 </td>
830 <td class="content">
831 <b>(lldb)</b> register write pc `$pc+8`<br>
832 </td>
833 </tr>
834
Jason Molendaa2f701f2011-10-25 01:28:31 +0000835 <tr><td class="header" colspan="2">Show the general purpose registers for the current thread formatted as <b>signed decimal</b>. LLDB tries to use
836 the same format characters as <b>printf(3)</b> when possible. Type "help format" to see the full list of format specifiers.</td></tr>
Jason Molendac09b8b92011-10-22 02:31:42 +0000837 <tr>
838 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000839 </td>
840 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000841 <b>(lldb)</b> register read --format i<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000842 <b>(lldb)</b> re r -f i<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000843 <br>
844 <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i><br>
845 <b>(lldb)</b> register read/d<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000846 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000847 </tr>
848
849 <tr><td class="header" colspan="2">Show all registers in all register sets for the current thread.</td></tr>
850 <tr>
851 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000852 <b>(gdb)</b> info all-registers<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000853 </td>
854 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000855 <b>(lldb)</b> register read --all<br>
856 <b>(lldb)</b> re r -a<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000857 </td>
858 </tr>
859
860 <tr><td class="header" colspan="2">Show the values for the registers named "rax", "rsp" and "rbp" in the current thread.</td></tr>
861 <tr>
862 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000863 <b>(gdb)</b> info all-registers rax rsp rbp<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000864 </td>
865 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000866 <b>(lldb)</b> register read rax rsp rbp<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000867 </td>
868 </tr>
869
870 <tr><td class="header" colspan="2">Show the values for the register named "rax" in the current thread formatted as <b>binary</b>.</td></tr>
871 <tr>
872 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000873 <b>(gdb)</b> p/t $rax<br>
874 </td>
875 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000876 <b>(lldb)</b> register read --format binary rax<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000877 <b>(lldb)</b> re r -f b rax<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000878 <br>
879 <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i><br>
880 <b>(lldb)</b> register read/t rax<br>
881 <b>(lldb)</b> p/t $rax<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000882 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000883 </tr>
884
885 <tr><td class="header" colspan="2">Read memory from address 0xbffff3c0 and show 4 hex uint32_t values.</td></tr>
886 <tr>
887 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000888 <b>(gdb)</b> x/4xw 0xbffff3c0<br>
889 </td>
890 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000891 <b>(lldb)</b> memory read --size 4 --format x --count 4 0xbffff3c0<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000892 <b>(lldb)</b> me r -s4 -fx -c4 0xbffff3c0<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000893 <b>(lldb)</b> x -s4 -fx -c4 0xbffff3c0<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000894 <br>
895 <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i><br>
896 <b>(lldb)</b> memory read/4xw 0xbffff3c0<br>
897 <b>(lldb)</b> x/4xw 0xbffff3c0<br>
898 <b>(lldb)</b> memory read --gdb-format 4xw 0xbffff3c0<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000899 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000900 </tr>
901
Greg Claytone90903a2012-02-16 02:10:58 +0000902 <tr><td class="header" colspan="2">Read memory starting at the expression "argv[0]".</td></tr>
903 <tr>
904 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000905 <b>(gdb)</b> x argv[0]<br>
906 </td>
907 <td class="content">
Greg Claytone90903a2012-02-16 02:10:58 +0000908 <b>(lldb)</b> memory read `argv[0]`<br>
909 <i><b>NOTE:</b> any command can inline a scalar expression result (as long as the target is stopped) using backticks around any expression:</i><br>
910 <b>(lldb)</b> memory read --size `sizeof(int)` `argv[0]`<br>
911 </td>
Greg Claytone90903a2012-02-16 02:10:58 +0000912 </tr>
913
Jason Molendac09b8b92011-10-22 02:31:42 +0000914 <tr><td class="header" colspan="2">Read 512 bytes of memory from address 0xbffff3c0 and save results to a local file as <b>text</b>.</td></tr>
915 <tr>
916 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000917 <b>(gdb)</b> set logging on<br>
918 <b>(gdb)</b> set logging file /tmp/mem.txt<br>
919 <b>(gdb)</b> x/512bx 0xbffff3c0<br>
920 <b>(gdb)</b> set logging off<br>
921 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000922 <td class="content">
923 <b>(lldb)</b> memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0<br>
924 <b>(lldb)</b> me r -o/tmp/mem.txt -c512 0xbffff3c0<br>
925 <b>(lldb)</b> x/512bx -o/tmp/mem.txt 0xbffff3c0<br>
926 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000927 </tr>
928
929 <tr><td class="header" colspan="2">Save binary memory data starting at 0x1000 and ending at 0x2000 to a file.</td></tr>
930 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000931 <td class="content">
932 <b>(gdb)</b> dump memory /tmp/mem.bin 0x1000 0x2000
933 </td>
934 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000935 <b>(lldb)</b> memory read --outfile /tmp/mem.bin --binary 0x1000 0x1200<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000936 <b>(lldb)</b> me r -o /tmp/mem.bin -b 0x1000 0x1200<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000937 </td>
938 </tr>
Greg Clayton4976e0e2012-11-19 17:47:29 +0000939 <tr><td class="header" colspan="2">Get information about a specific heap allocation (available on Mac OS X only).</td></tr>
940 <tr>
941 <td class="content">
942 <b>(gdb)</b> info malloc 0x10010d680
943 </td>
944 <td class="content">
Enrico Granata03e16772013-05-08 21:39:19 +0000945 <b>(lldb)</b> command script import lldb.macosx.heap<br>
Greg Clayton4976e0e2012-11-19 17:47:29 +0000946 <b>(lldb)</b> process launch --environment MallocStackLogging=1 -- [ARGS]<br>
947 <b>(lldb)</b> malloc_info --stack-history 0x10010d680<br>
948 </td>
949 </tr>
950 <tr><td class="header" colspan="2">Get information about a specific heap allocation and cast the result to any dynamic type that can be deduced (available on Mac OS X only)</td></tr>
951 <tr>
952 <td class="content">
953 </td>
954 <td class="content">
Enrico Granata03e16772013-05-08 21:39:19 +0000955 <b>(lldb)</b> command script import lldb.macosx.heap<br>
Greg Clayton4976e0e2012-11-19 17:47:29 +0000956 <b>(lldb)</b> malloc_info --type 0x10010d680<br>
957 </td>
958 </tr>
959 <tr><td class="header" colspan="2">Find all heap blocks that contain a pointer specified by an expression EXPR (available on Mac OS X only).</td></tr>
960 <tr>
961 <td class="content">
962 </td>
963 <td class="content">
Enrico Granata03e16772013-05-08 21:39:19 +0000964 <b>(lldb)</b> command script import lldb.macosx.heap<br>
Greg Clayton4976e0e2012-11-19 17:47:29 +0000965 <b>(lldb)</b> ptr_refs EXPR <br>
966 </td>
967 </tr>
968 <tr><td class="header" colspan="2">Find all heap blocks that contain a C string anywhere in the block (available on Mac OS X only).</td></tr>
969 <tr>
970 <td class="content">
971 </td>
972 <td class="content">
Enrico Granata03e16772013-05-08 21:39:19 +0000973 <b>(lldb)</b> command script import lldb.macosx.heap<br>
Greg Clayton4976e0e2012-11-19 17:47:29 +0000974 <b>(lldb)</b> cstr_refs CSTRING<br>
975 </td>
976 </tr>
Jason Molendac09b8b92011-10-22 02:31:42 +0000977 <tr><td class="header" colspan="2">Disassemble the current function for the current frame.</td></tr>
978 <tr>
979 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000980 <b>(gdb)</b> disassemble
Jason Molendac09b8b92011-10-22 02:31:42 +0000981 </td>
982 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000983 <b>(lldb)</b> disassemble --frame<br>
984 <b>(lldb)</b> di -f
Jason Molendac09b8b92011-10-22 02:31:42 +0000985 </td>
986 </tr>
987
988 <tr><td class="header" colspan="2">Disassemble any functions named <b>main</b>.</td></tr>
989 <tr>
990 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000991 <b>(gdb)</b> disassemble main
Jason Molendac09b8b92011-10-22 02:31:42 +0000992 </td>
993 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000994 <b>(lldb)</b> disassemble --name main<br>
995 <b>(lldb)</b> di -n main
Jason Molendac09b8b92011-10-22 02:31:42 +0000996 </td>
997 </tr>
998
999 <tr><td class="header" colspan="2">Disassemble an address range.</td></tr>
1000 <tr>
1001 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001002 <b>(gdb)</b> disassemble 0x1eb8 0x1ec3
Jason Molendac09b8b92011-10-22 02:31:42 +00001003 </td>
1004 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001005 <b>(lldb)</b> disassemble --start-address 0x1eb8 --end-address 0x1ec3<br>
1006 <b>(lldb)</b> di -s 0x1eb8 -e 0x1ec3<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001007 </td>
1008 </tr>
1009
1010 <tr><td class="header" colspan="2">Disassemble 20 instructions from a given address.</td></tr>
1011 <tr>
1012 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001013 <b>(gdb)</b> x/20i 0x1eb8
Jason Molendac09b8b92011-10-22 02:31:42 +00001014 </td>
1015 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001016 <b>(lldb)</b> disassemble --start-address 0x1eb8 --count 20<br>
1017 <b>(lldb)</b> di -s 0x1eb8 -c 20<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001018 </td>
1019 </tr>
1020
1021 <tr><td class="header" colspan="2">Show mixed source and disassembly for the current function for the current frame.</td></tr>
1022 <tr>
1023 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001024 n/a
Jason Molendac09b8b92011-10-22 02:31:42 +00001025 </td>
1026 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001027 <b>(lldb)</b> disassemble --frame --mixed<br>
1028 <b>(lldb)</b> di -f -m
Jason Molendac09b8b92011-10-22 02:31:42 +00001029 </td>
1030 </tr>
1031
1032 <tr><td class="header" colspan="2">Disassemble the current function for the current frame and show the opcode bytes.</td></tr>
1033 <tr>
1034 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001035 n/a
Jason Molendac09b8b92011-10-22 02:31:42 +00001036 </td>
1037 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001038 <b>(lldb)</b> disassemble --frame --bytes<br>
1039 <b>(lldb)</b> di -f -b
Jason Molendac09b8b92011-10-22 02:31:42 +00001040 </td>
1041 </tr>
1042
1043 <tr><td class="header" colspan="2">Disassemble the current source line for the current frame.</td></tr>
1044 <tr>
1045 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001046 n/a
Jason Molendac09b8b92011-10-22 02:31:42 +00001047 </td>
1048 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001049 <b>(lldb)</b> disassemble --line<br>
1050 <b>(lldb)</b> di -l
Jason Molendac09b8b92011-10-22 02:31:42 +00001051 </td>
1052 </tr>
1053
1054 </table>
1055 <p>
1056 </div>
Jason Molendaa2f701f2011-10-25 01:28:31 +00001057 <div class="postfooter"></div>
Jason Molendac09b8b92011-10-22 02:31:42 +00001058
Jason Molendaa2f701f2011-10-25 01:28:31 +00001059 <h1 class ="postheader">Executable and Shared Library Query Commands</h1>
1060 <div class="post">
Jason Molendac09b8b92011-10-22 02:31:42 +00001061
1062 <p>
1063
Jason Molendaa2f701f2011-10-25 01:28:31 +00001064 <table class="stats" width="620" cellspacing="0">
Jason Molendac09b8b92011-10-22 02:31:42 +00001065 <tr>
Jason Molendac09b8b92011-10-22 02:31:42 +00001066 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +00001067 <td class="hed" width="50%">LLDB</td>
Jason Molendac09b8b92011-10-22 02:31:42 +00001068 </tr>
1069
1070
1071 <tr><td class="header" colspan="2">List the main executable and all dependent shared libraries.</td></tr>
1072 <tr>
1073 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001074 <b>(gdb)</b> info shared<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001075 </td>
1076 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001077 <b>(lldb)</b> image list<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001078 </td>
1079 </tr>
1080
Jason Molendaee7a6632012-10-19 19:52:12 +00001081 <tr><td class="header" colspan="2">Look up information for a raw address in the executable or any shared libraries.</td></tr>
Jason Molendac09b8b92011-10-22 02:31:42 +00001082 <tr>
1083 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001084 <b>(gdb)</b> info symbol 0x1ec4<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001085 </td>
1086 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001087 <b>(lldb)</b> image lookup --address 0x1ec4<br>
1088 <b>(lldb)</b> im loo -a 0x1ec4<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001089 </td>
1090 </tr>
1091
Jason Molendaee7a6632012-10-19 19:52:12 +00001092 <tr><td class="header" colspan="2">Look up functions matching a regular expression in a binary.</td></tr>
Jim Ingham284a2a32012-09-12 00:38:19 +00001093 <tr>
1094 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001095 <b>(gdb)</b> info function &lt;FUNC_REGEX&gt;<br>
1096 </td>
1097 <td class="content">
Jim Ingham284a2a32012-09-12 00:38:19 +00001098 This one finds debug symbols:<br>
1099 <b>(lldb)</b> image lookup -r -n &lt;FUNC_REGEX&gt;<br><br>
1100 This one finds non-debug symbols:<br>
1101 <b>(lldb)</b> image lookup -r -s &lt;FUNC_REGEX&gt;<br><br>
1102 Provide a list of binaries as arguments to limit the search.
1103 </td>
Jim Ingham284a2a32012-09-12 00:38:19 +00001104 </tr>
1105
Jim Ingham28ba5252013-04-18 22:03:01 +00001106 <tr><td class="header" colspan="2">Find full souce line information.</td></tr>
1107 <tr>
1108 <td class="content">
1109 <b>(gdb)</b> info line 0x1ec4<br>
1110 </td>
1111 <td class="content">
1112 This one is a bit messy at present. Do:<br><br>
1113 <b>(lldb)</b> image lookup -v --address 0x1ec4<br><br>
1114 and look for the LineEntry line, which will have the full source path and
1115 line range information.<br>
1116 </td>
1117 </tr>
1118
Sean Callananc6b4f9e2013-05-13 18:30:58 +00001119 <tr><td class="header" colspan="2">Look up information for an address in <b>a.out</b> only.</td></tr>
Jason Molendac09b8b92011-10-22 02:31:42 +00001120 <tr>
1121 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +00001122 </td>
1123 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001124 <b>(lldb)</b> image lookup --address 0x1ec4 a.out<br>
1125 <b>(lldb)</b> im loo -a 0x1ec4 a.out<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001126 </td>
1127 </tr>
1128
Jason Molendaee7a6632012-10-19 19:52:12 +00001129 <tr><td class="header" colspan="2">Look up information for for a type <code>Point</code> by name.</td></tr>
Jason Molendac09b8b92011-10-22 02:31:42 +00001130 <tr>
1131 <td class="content">
Jason Molendaee7a6632012-10-19 19:52:12 +00001132 <b>(gdb)</b> ptype Point<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001133 </td>
1134 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001135 <b>(lldb)</b> image lookup --type Point<br>
1136 <b>(lldb)</b> im loo -t Point<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001137 </td>
1138 </tr>
1139
1140 <tr><td class="header" colspan="2">Dump all sections from the main executable and any shared libraries.</td></tr>
1141 <tr>
1142 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001143 <b>(gdb)</b> maintenance info sections<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001144 </td>
1145 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001146 <b>(lldb)</b> image dump sections<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001147 </td>
1148 </tr>
1149
1150 <tr><td class="header" colspan="2">Dump all sections in the <b>a.out</b> module.</td></tr>
1151 <tr>
1152 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +00001153 </td>
1154 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001155 <b>(lldb)</b> image dump sections a.out<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001156 </td>
1157 </tr>
1158
1159 <tr><td class="header" colspan="2">Dump all symbols from the main executable and any shared libraries.</td></tr>
1160 <tr>
1161 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +00001162 </td>
1163 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001164 <b>(lldb)</b> image dump symtab<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001165 </td>
1166 </tr>
1167
1168 <tr><td class="header" colspan="2">Dump all symbols in <b>a.out</b> and <b>liba.so</b>.</td></tr>
1169 <tr>
1170 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +00001171 </td>
1172 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001173 <b>(lldb)</b> image dump symtab a.out liba.so<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001174 </td>
1175 </tr>
1176
1177 </table>
1178 <p>
1179 </div>
Jim Ingham8ec35132012-05-11 18:01:15 +00001180 <div class="postfooter"></div>
1181 <h1 class ="postheader">Miscellaneous</h1>
1182 <div class="post">
1183 <p>
1184 <table class="stats" width="620" cellspacing="0">
1185 <tr>
Jim Ingham8ec35132012-05-11 18:01:15 +00001186 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +00001187 <td class="hed" width="50%">LLDB</td>
Jim Ingham8ec35132012-05-11 18:01:15 +00001188 </tr>
1189
1190 <tr><td class="header" colspan="2">Echo text to the screen.</td></tr>
1191 <tr>
1192 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001193 <b>(gdb)</b> echo Here is some text\n<br>
Jim Ingham8ec35132012-05-11 18:01:15 +00001194 </td>
1195 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001196 <b>(lldb)</b> script print &quot;Here is some text&quot;<br>
Jim Ingham8ec35132012-05-11 18:01:15 +00001197 </td>
1198 </tr>
1199
Jason Molenda0a07c0e2012-10-26 04:38:09 +00001200 <tr><td class="header" colspan="2">Remap source file pathnames for the debug session. If your source files are no longer located in the same location as when the program was built --- maybe the program was built on a different computer --- you need to tell the debugger how to find the sources at their local file path instead of the build system's file path.</td></tr>
1201 <tr>
1202 <td class="content">
1203 <b>(gdb)</b> set pathname-substitutions /buildbot/path /my/path<br>
1204 </td>
1205 <td class="content">
1206 <b>(lldb)</b> settings set target.source-map /buildbot/path /my/path<br>
1207 </td>
1208 </tr>
1209
1210 <tr><td class="header" colspan="2">Supply a catchall directory to search for source files in.</td></tr>
1211 <tr>
1212 <td class="content">
1213 <b>(gdb)</b> directory /my/path<br>
1214 </td>
1215 <td class="content">
1216 (<i>No equivalent command yet.)<br>
1217 </td>
1218 </tr>
1219
Jim Ingham8ec35132012-05-11 18:01:15 +00001220 </table>
1221 <p>
1222 </div>
1223
Jason Molendaa2f701f2011-10-25 01:28:31 +00001224 <div class="postfooter"></div>
Jason Molendac09b8b92011-10-22 02:31:42 +00001225
1226 <p>
1227
Jason Molendaa2f701f2011-10-25 01:28:31 +00001228
Jason Molendac09b8b92011-10-22 02:31:42 +00001229 </div>
Jason Molendaa2f701f2011-10-25 01:28:31 +00001230 </div>
1231 </div>
Jason Molendac09b8b92011-10-22 02:31:42 +00001232</div>
1233</body>
1234</html>