blob: 58106343cfe82f5ae6dea3f224a348f6355ae1f7 [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
Jim Ingham10384182013-07-26 23:20:05 +000083 <tr><td class="header" colspan="2">Or:</td></tr>
84 <td class="content">
85 <b>(gdb)</b> set args 1 2 3<br>
86 <b>(gdb)</b> run<br>
87 ...<br>
88 <b>(gdb)</b> run<br>
89 ...<br>
90 </td>
91 <td class="content">
92 <b>(lldb)</b> settings set target.run-args 1 2 3<br>
93 <b>(lldb)</b> run<br>
94 ...<br>
95 <b>(lldb)</b> run<br>
96 ...<br>
97 </td>
98 </tr>
99
Jason Molendac09b8b92011-10-22 02:31:42 +0000100 <tr><td class="header" colspan="2">Launch a process with arguments in new terminal window (Mac OS X only).</td></tr>
101 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000102 </td>
103 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000104 <b>(lldb)</b> process launch --tty -- &lt;args&gt;<br>
105 <b>(lldb)</b> pro la -t -- &lt;args&gt;<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000106 </td>
107 </tr>
108
109 <tr><td class="header" colspan="2">Launch a process with arguments in existing terminal <cope>/dev/ttys006</code> (Mac OS X only).</td></tr>
110 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000111 </td>
112 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000113 <b>(lldb)</b> process launch --tty=/dev/ttys006 -- &lt;args&gt;<br>
114 <b>(lldb)</b> pro la -t/dev/ttys006 -- &lt;args&gt;<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000115 </td>
116 </tr>
117
Jason Molenda19113d62012-12-06 22:10:27 +0000118 <tr><td class="header" colspan="2">Set environment variables for process before launching.</td></tr>
119 <td class="content">
120 <b>(gdb)</b> set env DEBUG 1<br>
121 </td>
122 <td class="content">
123 <b>(lldb)</b> settings set target.env-vars DEBUG=1<br>
124 <b>(lldb)</b> set se target.env-vars DEBUG=1<br>
Greg Claytona53efae2013-02-12 18:54:34 +0000125 <b>(lldb)</b> env DEBUG=1<br>
Jason Molenda19113d62012-12-06 22:10:27 +0000126 </td>
127 </tr>
128
Jim Ingham10384182013-07-26 23:20:05 +0000129 <tr><td class="header" colspan="2">Show the arguments that will be or were passed to the program when run.</td></tr>
130 <td class="content">
131 <b>(gdb)</b> show args<br>
132 Argument list to give program being debugged when it is started is &quot;1 2 3&quot.<br>
133 </td>
134 <td class="content">
135 <b>(lldb)</b> settings show target.run-args<br>
136 target.run-args (array of strings) =<br>
137 [0]: &quot;1&quot;<br>
138 [1]: &quot;2&quot;<br>
139 [2]: &quot;3&quot;<br>
140 </td>
141 </tr>
142
143
Jason Molenda19113d62012-12-06 22:10:27 +0000144 <tr><td class="header" colspan="2">Set environment variables for process and launch process in one command.</td></tr>
145 <td class="content">
146 </td>
147 <td class="content">
148 <b>(lldb)</b> process launch -v DEBUG=1<br>
149 </td>
150 </tr>
151
Jason Molendac09b8b92011-10-22 02:31:42 +0000152 <tr><td class="header" colspan="2">Attach to a process with process ID 123.</td></tr>
153 <tr>
154 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000155 <b>(gdb)</b> attach 123
Jason Molendac09b8b92011-10-22 02:31:42 +0000156 </td>
157 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000158 <b>(lldb)</b> process attach --pid 123<br>
159 <b>(lldb)</b> attach -p 123
Jason Molendac09b8b92011-10-22 02:31:42 +0000160 </td>
161 </tr>
162
163 <tr><td class="header" colspan="2">Attach to a process named "a.out".</td></tr>
164 <tr>
165 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000166 <b>(gdb)</b> attach a.out
Jason Molendac09b8b92011-10-22 02:31:42 +0000167 </td>
168 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000169 <b>(lldb)</b> process attach --name a.out<br>
170 <b>(lldb)</b> pro at -n a.out
Jason Molendac09b8b92011-10-22 02:31:42 +0000171 </td>
172 </tr>
173
174 <tr><td class="header" colspan="2">Wait for a process named "a.out" to launch and attach.</td></tr>
175 <tr>
176 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000177 <b>(gdb)</b> attach -waitfor a.out
Jason Molendac09b8b92011-10-22 02:31:42 +0000178 </td>
179 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000180 <b>(lldb)</b> process attach --name a.out --waitfor<br>
181 <b>(lldb)</b> pro at -n a.out -w
Jason Molendac09b8b92011-10-22 02:31:42 +0000182 </td>
183 </tr>
184
Jason Molenda4e8570b2012-09-26 22:42:25 +0000185 <tr><td class="header" colspan="2">Attach to a remote gdb protocol server running on system "eorgadd", port 8000.</td></tr>
186 <tr>
187 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000188 <b>(gdb)</b> target remote eorgadd:8000
Jason Molenda4e8570b2012-09-26 22:42:25 +0000189 </td>
190 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000191 <b>(lldb)</b> gdb-remote eorgadd:8000
Jason Molenda4e8570b2012-09-26 22:42:25 +0000192 </td>
193 </tr>
194
195 <tr><td class="header" colspan="2">Attach to a remote gdb protocol server running on the local system, port 8000.</td></tr>
196 <tr>
197 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000198 <b>(gdb)</b> target remote localhost:8000
Jason Molenda4e8570b2012-09-26 22:42:25 +0000199 </td>
200 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000201 <b>(lldb)</b> gdb-remote 8000
Jason Molenda4e8570b2012-09-26 22:42:25 +0000202 </td>
203 </tr>
204
205 <tr><td class="header" colspan="2">Attach to a Darwin kernel in kdp mode on system "eorgadd".</td></tr>
206 <tr>
207 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000208 <b>(gdb)</b> kdp-reattach eorgadd
Jason Molenda4e8570b2012-09-26 22:42:25 +0000209 </td>
210 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000211 <b>(lldb)</b> kdp-remote eorgadd
Jason Molenda4e8570b2012-09-26 22:42:25 +0000212 </td>
213 </tr>
214
Jason Molendac09b8b92011-10-22 02:31:42 +0000215 <tr><td class="header" colspan="2">Do a source level single step in the currently selected thread.</td></tr>
216 <tr>
217 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000218 <b>(gdb)</b> step<br>
219 <b>(gdb)</b> s
220 </td>
221 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000222 <b>(lldb)</b> thread step-in<br>
223 <b>(lldb)</b> step<br>
224 <b>(lldb)</b> s
225 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000226 </tr>
227
228
229 <tr><td class="header" colspan="2">Do a source level single step over in the currently selected thread.</td></tr>
230 <tr>
231 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000232 <b>(gdb)</b> next<br>
233 <b>(gdb)</b> n
234 </td>
235 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000236 <b>(lldb)</b> thread step-over<br>
237 <b>(lldb)</b> next<br>
238 <b>(lldb)</b> n<br>
239 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000240 </tr>
241
242 <tr><td class="header" colspan="2">Do an instruction level single step in the currently selected thread.</td></tr>
243 <tr>
244 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000245 <b>(gdb)</b> stepi<br>
246 <b>(gdb)</b> si
247 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000248 <td class="content">
249 <b>(lldb)</b> thread step-inst<br>
250 <b>(lldb)</b> si<br>
251 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000252 </tr>
253
254 <tr><td class="header" colspan="2">Do an instruction level single step over in the currently selected thread.</td></tr>
255 <tr>
256 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000257 <b>(gdb)</b> nexti<br>
258 <b>(gdb)</b> ni
259 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000260 <td class="content">
261 <b>(lldb)</b> thread step-inst-over<br>
262 <b>(lldb)</b> ni
263 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000264 </tr>
265
266 <tr><td class="header" colspan="2">Step out of the currently selected frame.</td></tr>
267 <tr>
268 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000269 <b>(gdb)</b> finish<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000270 </td>
271 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000272 <b>(lldb)</b> thread step-out<br>
273 <b>(lldb)</b> finish<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000274 </td>
275 </tr>
276
Jim Inghamd4418072013-02-20 23:38:37 +0000277 <tr><td class="header" colspan="2">Return immediately from the currently selected frame, with an optional return value.</td></tr>
278 <tr>
279 <td class="content">
280 <b>(gdb)</b> return &lt;RETURN EXPRESSION&gt;<br>
281 </td>
282 <td class="content">
283 <b>(lldb)</b> thread return &lt;RETURN EXPRESSION&gt;<br>
284 </td>
285 </tr>
286
Jason Molendaa2f701f2011-10-25 01:28:31 +0000287 <tr><td class="header" colspan="2">Backtrace and disassemble every time you stop.</td></tr>
288 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000289 <td class="content">
290 </td>
291 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000292 <b>(lldb)</b> target stop-hook add<br>
293 Enter your stop hook command(s). Type 'DONE' to end.<br>
294 &gt; bt<br>
295 &gt; disassemble --pc<br>
296 &gt; DONE<br>
297 Stop hook #1 added.<br>
298 </td>
299 </tr>
300
301 </table>
302 <p>
303 </div>
304 <div class="postfooter"></div>
305
306 <h1 class ="postheader">Breakpoint Commands</h1>
307 <div class="post">
308
309 <p>
310
311 <table class="stats" width="620" cellspacing="0">
312 <tr>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000313 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000314 <td class="hed" width="50%">LLDB</td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000315 </tr>
316
317 <tr><td class="header" colspan="2">Set a breakpoint at all functions named <b>main</b>.</td></tr>
318 <tr>
319 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000320 <b>(gdb)</b> break main
321 </td>
322 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000323 <b>(lldb)</b> breakpoint set --name main<br>
324 <b>(lldb)</b> br s -n main<br>
325 <b>(lldb)</b> b main
326 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000327 </tr>
328
329 <tr><td class="header" colspan="2">Set a breakpoint in file <b>test.c</b> at line <b>12</b>.</td></tr>
330 <tr>
331 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000332 <b>(gdb)</b> break test.c:12
333 </td>
334 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000335 <b>(lldb)</b> breakpoint set --file test.c --line 12<br>
336 <b>(lldb)</b> br s -f test.c -l 12<br>
337 <b>(lldb)</b> b test.c:12
338 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000339 </tr>
340
341 <tr><td class="header" colspan="2">Set a breakpoint at all C++ methods whose basename is <b>main</b>.</td></tr>
342 <tr>
343 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000344 <b>(gdb)</b> break main<br>
345 <i>(Hope that there are no C funtions named <b>main</b>)</i>.
346 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000347 <td class="content">
348 <b>(lldb)</b> breakpoint set --method main<br>
349 <b>(lldb)</b> br s -M main<br>
350 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000351 </tr>
352
Greg Claytone90903a2012-02-16 02:10:58 +0000353 <tr><td class="header" colspan="2">Set a breakpoint at and object C function: <b>-[NSString stringWithFormat:]</b>.</td></tr>
354 <tr>
355 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000356 <b>(gdb)</b> break -[NSString stringWithFormat:]<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000357 </td>
358 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000359 <b>(lldb)</b> breakpoint set --name "-[NSString stringWithFormat:]"<br>
360 <b>(lldb)</b> b -[NSString stringWithFormat:]<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000361 </td>
362 </tr>
363
Jason Molendaa2f701f2011-10-25 01:28:31 +0000364 <tr><td class="header" colspan="2">Set a breakpoint at all Objective C methods whose selector is <b>count</b>.</td></tr>
365 <tr>
366 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000367 <b>(gdb)</b> break count<br>
368 <i>(Hope that there are no C or C++ funtions named <b>count</b>)</i>.
369 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000370 <td class="content">
371 <b>(lldb)</b> breakpoint set --selector count<br>
372 <b>(lldb)</b> br s -S count<br>
373 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000374 </tr>
Jim Inghame1280682012-10-18 21:54:05 +0000375 <tr><td class="header" colspan="2">Set a breakpoint by regular expression on function name.</td></tr>
376
377 <tr>
378 <td class="content">
379 <b>(gdb)</b> rbreak regular-expression<br>
380 </td>
381 <td class="content">
Greg Clayton9d1ac6a2012-12-19 00:15:34 +0000382 <b>(lldb)</b> breakpoint set --func-regex regular-expression<br>
Jim Inghame1280682012-10-18 21:54:05 +0000383 <b>(lldb)</b> br s -r regular-expression<br>
384 </td>
385 </tr>
386
Jim Ingham0772b532013-02-14 19:17:49 +0000387 <tr><td class="header" colspan="2">Ensure that breakpoints by file and line work for #included .c/.cpp/.m files.</td></tr>
388
389 <tr>
390 <td class="content">
391 <b>(gdb)</b> b foo.c:12<br>
392 </td>
393 <td class="content">
394 <b>(lldb)</b> settings set target.inline-breakpoint-strategy always<br>
395 <b>(lldb)</b> br s -f foo.c -l 12<br>
396 </td>
397 </tr>
398
Jim Inghame1280682012-10-18 21:54:05 +0000399 <tr><td class="header" colspan="2">Set a breakpoint by regular expression on source file contents.</td></tr>
400
401 <tr>
402 <td class="content">
403 <b>(gdb)</b> shell grep -e -n pattern source-file<br>
404 <b>(gdb)</b> break source-file:CopyLineNumbers<br>
405 </td>
406 <td class="content">
407 <b>(lldb)</b> breakpoint set --source-pattern regular-expression --file SourceFile<br>
408 <b>(lldb)</b> br s -p regular-expression -f file<br>
409 </td>
410 </tr>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000411
Sean Callanancaf4da92012-01-04 21:20:39 +0000412 <tr><td class="header" colspan="2">List all breakpoints.</td></tr>
413 <tr>
414 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000415 <b>(gdb)</b> info break<br>
Sean Callanancaf4da92012-01-04 21:20:39 +0000416 </td>
417 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000418 <b>(lldb)</b> breakpoint list<br>
419 <b>(lldb)</b> br l<br>
Sean Callanancaf4da92012-01-04 21:20:39 +0000420 </td>
421 </tr>
422
423 <tr><td class="header" colspan="2">Delete a breakpoint.</td></tr>
424 <tr>
425 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000426 <b>(gdb)</b> delete 1<br>
Sean Callanancaf4da92012-01-04 21:20:39 +0000427 </td>
428 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000429 <b>(lldb)</b> breakpoint delete 1<br>
430 <b>(lldb)</b> br del 1<br>
Sean Callanancaf4da92012-01-04 21:20:39 +0000431 </td>
432 </tr>
433
Jason Molendaa2f701f2011-10-25 01:28:31 +0000434 </table>
435 <p>
436 </div>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000437 <div class="postfooter"></div>
438
439 <h1 class ="postheader">Watchpoint Commands</h1>
440 <div class="post">
441
442 <p>
443
444 <table class="stats" width="620" cellspacing="0">
445 <tr>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000446 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000447 <td class="hed" width="50%">LLDB</td>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000448 </tr>
449
450 <tr><td class="header" colspan="2">Set a watchpoint on a variable when it is written to.</td></tr>
451 <tr>
452 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000453 <b>(gdb)</b> watch global_var
Johnny Chen48e8dde2012-03-16 00:44:02 +0000454 </td>
455 <td class="content">
Jason Molendada2be4e2012-10-05 20:25:53 +0000456 <b>(lldb)</b> watchpoint set variable global_var<br>
457 <b>(lldb)</b> wa s v global_var<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000458 </td>
459 </tr>
460
461 <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.
462 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>
463 <tr>
464 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000465 <b>(gdb)</b> watch -location g_char_ptr
466 </td>
467 <td class="content">
Jason Molendae2477452012-10-05 20:28:11 +0000468 <b>(lldb)</b> watchpoint set expression -- my_ptr<br>
Jason Molendada2be4e2012-10-05 20:25:53 +0000469 <b>(lldb)</b> wa s e -- my_ptr<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000470 </td>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000471 </tr>
472
473 <tr><td class="header" colspan="2">Set a condition on a watchpoint</b>.</td></tr>
474 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000475 <td class="content">
476 </td>
477 <td class="content">
Jason Molendae2477452012-10-05 20:28:11 +0000478 <b>(lldb)</b> watch set var global<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000479 <b>(lldb)</b> watchpoint modify -c '(global==5)'<br>
480 <b>(lldb)</b> c<br>
481 ...<br>
482 <b>(lldb)</b> bt<br>
483 * thread #1: tid = 0x1c03, 0x0000000100000ef5 a.out`modify + 21 at main.cpp:16, stop reason = watchpoint 1<br>
484 frame #0: 0x0000000100000ef5 a.out`modify + 21 at main.cpp:16<br>
485 frame #1: 0x0000000100000eac a.out`main + 108 at main.cpp:25<br>
486 frame #2: 0x00007fff8ac9c7e1 libdyld.dylib`start + 1<br>
487 <b>(lldb)</b> frame var global<br>
488 (int32_t) global = 5<br>
489 </td>
490 </tr>
491
492 <tr><td class="header" colspan="2">List all watchpoints.</td></tr>
493 <tr>
494 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000495 <b>(gdb)</b> info break<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000496 </td>
497 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000498 <b>(lldb)</b> watchpoint list<br>
499 <b>(lldb)</b> watch l<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000500 </td>
501 </tr>
502
503 <tr><td class="header" colspan="2">Delete a watchpoint.</td></tr>
504 <tr>
505 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000506 <b>(gdb)</b> delete 1<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000507 </td>
508 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000509 <b>(lldb)</b> watchpoint delete 1<br>
510 <b>(lldb)</b> watch del 1<br>
Johnny Chen48e8dde2012-03-16 00:44:02 +0000511 </td>
512 </tr>
513
514 </table>
515 <p>
516 </div>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000517
518 <div class="postfooter"></div>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000519 <h1 class ="postheader">Examining Variables</h1>
520 <div class="post">
521 <p>
522 <table class="stats" width="620" cellspacing="0">
523 <tr>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000524 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000525 <td class="hed" width="50%">LLDB</td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000526 </tr>
527
528 <tr><td class="header" colspan="2">Show the arguments and local variables for the current frame.</td></tr>
529 <tr>
530 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000531 <b>(gdb)</b> info args<br>
532 and<br>
533 <b>(gdb)</b> info locals<br>
534 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000535 <td class="content">
536 <b>(lldb)</b> frame variable<br>
Jason Molendada2be4e2012-10-05 20:25:53 +0000537 <b>(lldb)</b> fr v<br>
Jason Molenda704506b2012-10-05 04:26:06 +0000538 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000539 </tr>
540
541 <tr><td class="header" colspan="2">Show the local variables for the current frame.</td></tr>
542 <tr>
543 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000544 <b>(gdb)</b> info locals<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000545 </td>
546 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000547 <b>(lldb)</b> frame variable --no-args<br>
548 <b>(lldb)</b> fr v -a<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000549 </td>
550 </tr>
551
552 <tr><td class="header" colspan="2">Show the contents of local variable "bar".</td></tr>
553 <tr>
554 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000555 <b>(gdb)</b> p bar<br>
556 </td>
557 <td class="content">
Jason Molendaa2f701f2011-10-25 01:28:31 +0000558 <b>(lldb)</b> frame variable bar <br>
559 <b>(lldb)</b> fr v bar <br>
560 <b>(lldb)</b> p bar <br>
561 </td>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000562 </tr>
563
564 <tr><td class="header" colspan="2">Show the contents of local variable "bar" formatted as hex.</td></tr>
565 <tr>
566 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000567 <b>(gdb)</b> p/x bar<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000568 </td>
569 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000570 <b>(lldb)</b> frame variable --format x bar <br>
571 <b>(lldb)</b> fr v -f x bar <br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000572 </td>
573 </tr>
574
575 <tr><td class="header" colspan="2">Show the contents of global variable "baz".</td></tr>
576 <tr>
577 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000578 <b>(gdb)</b> p baz<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000579 </td>
580 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000581 <b>(lldb)</b> target variable baz <br>
582 <b>(lldb)</b> ta v baz <br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000583 </td>
584 </tr>
585
586 <tr><td class="header" colspan="2">Show the global/static variables defined in the current source file.</td></tr>
587 <tr>
588 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000589 n/a<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000590 </td>
591 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000592 <b>(lldb)</b> target variable <br>
593 <b>(lldb)</b> ta v <br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000594 </td>
595 </tr>
596
Jason Molendaa0a10d02011-10-25 01:28:56 +0000597 <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 +0000598 <tr>
599 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000600 <b>(gdb)</b> display argc<br>
601 <b>(gdb)</b> display argv<br>
602 </td>
603 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000604 <b>(lldb)</b> target stop-hook add --one-liner "frame variable argc argv"<br>
605 <b>(lldb)</b> ta st a -o "fr v argc argv"<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000606 <b>(lldb)</b> display argc<br>
607 <b>(lldb)</b> display argv<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000608 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000609 </tr>
610
611 <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>
612 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000613 <td class="content">
614 </td>
615 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000616 <b>(lldb)</b> target stop-hook add --name main --one-liner "frame variable argc argv"<br>
617 <b>(lldb)</b> ta st a -n main -o "fr v argc argv"<br>
618 </td>
619 </tr>
620
621 <tr><td class="header" colspan="2">Display the variable "*this" only when you stop in c class named <b>MyClass</b>.</td></tr>
622 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000623 <td class="content">
624 </td>
625 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000626 <b>(lldb)</b> target stop-hook add --classname MyClass --one-liner "frame variable *this"<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000627 <b>(lldb)</b> ta st a -c MyClass -o "fr v *this"<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000628 </td>
629 </tr>
630
631 </table>
632 <p>
633 </div>
Jason Molendac09b8b92011-10-22 02:31:42 +0000634
Jim Ingham41609db2012-08-24 22:56:40 +0000635
636
637
638 <h1 class ="postheader">Evaluating expressions</h1>
639 <div class="post">
640 <p>
641 <table class="stats" width="620" cellspacing="0">
642 <tr>
Jim Ingham41609db2012-08-24 22:56:40 +0000643 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000644 <td class="hed" width="50%">LLDB</td>
Jim Ingham41609db2012-08-24 22:56:40 +0000645 </tr>
646
647 <tr><td class="header" colspan="2">Evaluating a generalized expression in the current frame.</td></tr>
648 <tr>
649 <td class="content">
Jim Ingham41609db2012-08-24 22:56:40 +0000650 <b>(gdb)</b> print (int) printf ("Print nine: %d.", 4 + 5)<br>
651 or if you don't want to see void returns: <br>
652 <b>(gdb)</b> call (int) printf ("Print nine: %d.", 4 + 5)<br>
653 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000654 <td class="content">
655 <b>(lldb)</b> expr (int) printf ("Print nine: %d.", 4 + 5)<br>
656 or using the print alias:<br>
657 <b>(lldb)</b> print (int) printf ("Print nine: %d.", 4 + 5)<br>
658 </td>
Jim Ingham41609db2012-08-24 22:56:40 +0000659 </tr>
660
Jim Inghamd21d8aa2012-10-25 17:35:53 +0000661 <tr><td class="header" colspan="2">Creating and assigning a value to a convenience variable.</td></tr>
662 <tr>
663 <td class="content">
664 <b>(gdb)</b> set $foo = 5<br>
665 <b>(gdb)</b> set variable $foo = 5<br>
666 or using the print command <br>
667 <b>(gdb)</b> print $foo = 5<br>
668 or using the call command <br>
669 <b>(gdb)</b> call $foo = 5<br>
670 and if you want to specify the type of the variable:
671 <b>(gdb)</b> set $foo = (unsigned int) 5<br>
672
673 </td>
674 <td class="content">
675 In lldb you evaluate a variable declaration expression as you would write it in C:<br>
676 <b>(lldb)</b> expr unsigned int $foo = 5<br>
677 </td>
678 </tr>
679
Jim Ingham41609db2012-08-24 22:56:40 +0000680 <tr><td class="header" colspan="2">Printing the ObjC "description" of an object.</td></tr>
681 <tr>
682 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000683 <b>(gdb)</b> po [SomeClass returnAnObject]<br>
684 </td>
685 <td class="content">
Jim Ingham41609db2012-08-24 22:56:40 +0000686 <b>(lldb)</b> expr -o -- [SomeClass returnAnObject]<br>
687 or using the po alias:<br>
688 <b>(lldb)</b> po [SomeClass returnAnObject]<br>
689 </td>
Jim Ingham41609db2012-08-24 22:56:40 +0000690 </tr>
691
692 <tr><td class="header" colspan="2">Print the dynamic type of the result of an expression.</td></tr>
693 <tr>
694 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000695 <b>(gdb)</b> set print object 1<br>
696 <b>(gdb)</b> p someCPPObjectPtrOrReference<br>
697 only works for C++ objects.<br>
698 </td>
699 <td class="content">
Jim Ingham41609db2012-08-24 22:56:40 +0000700 <b>(lldb)</b> expr -d 1 -- [SomeClass returnAnObject]<br>
701 <b>(lldb)</b> expr -d 1 -- someCPPObjectPtrOrReference<br>
702 or set dynamic type printing to be the default:
703 <b>(lldb)</b> settings set target.prefer-dynamic run-target<br>
704 </td>
Jim Ingham41609db2012-08-24 22:56:40 +0000705 </tr>
706
Jim Ingham9a579ee2012-11-15 19:13:33 +0000707 <tr><td class="header" colspan="2">Calling a function so you can stop at a breakpoint in the function.</td></tr>
708 <tr>
709 <td class="content">
710 <b>(gdb)</b> set unwindonsignal 0<br>
711 <b>(gdb)</b> p function_with_a_breakpoint()<br>
712 </td>
713 <td class="content">
Jim Inghamdf7a41d2013-01-15 02:57:33 +0000714 <b>(lldb)</b> expr -i 0 -- function_with_a_breakpoint()<br>
715 </td>
716 </tr>
717
718 <tr><td class="header" colspan="2">Calling a function that crashes, and stopping when the function crashes.</td></tr>
719 <tr>
720 <td class="content">
721 <b>(gdb)</b> set unwindonsignal 0<br>
722 <b>(gdb)</b> p function_which_crashes()<br>
723 </td>
724 <td class="content">
725 <b>(lldb)</b> expr -u 0 -- function_which_crashes()<br>
Jim Ingham9a579ee2012-11-15 19:13:33 +0000726 </td>
727 </tr>
728
Jim Ingham41609db2012-08-24 22:56:40 +0000729
730 </table>
731 <p>
732 </div>
733
Jason Molendaa2f701f2011-10-25 01:28:31 +0000734 <h1 class ="postheader">Examining Thread State</h1>
735 <div class="post">
Jason Molendac09b8b92011-10-22 02:31:42 +0000736 <p>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000737 <table class="stats" width="620" cellspacing="0">
Jason Molendac09b8b92011-10-22 02:31:42 +0000738 <tr>
Jason Molendac09b8b92011-10-22 02:31:42 +0000739 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +0000740 <td class="hed" width="50%">LLDB</td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000741 </tr>
742
Jason Molendac09b8b92011-10-22 02:31:42 +0000743
744 <tr><td class="header" colspan="2">Show the stack backtrace for the current thread.</td></tr>
745 <tr>
746 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000747 <b>(gdb)</b> bt<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000748 </td>
749 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000750 <b>(lldb)</b> thread backtrace<br>
751 <b>(lldb)</b> bt<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000752 </td>
753 </tr>
754
755 <tr><td class="header" colspan="2">Show the stack backtraces for all threads.</td></tr>
756 <tr>
757 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000758 <b>(gdb)</b> thread apply all bt
Jason Molendac09b8b92011-10-22 02:31:42 +0000759 </td>
760 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000761 <b>(lldb)</b> thread backtrace all<br>
762 <b>(lldb)</b> bt all
Jason Molendac09b8b92011-10-22 02:31:42 +0000763 </td>
764 </tr>
765
Jason Molendab856a452012-10-26 23:56:03 +0000766 <tr><td class="header" colspan="2">Backtrace the first five frames of the current thread.</td></tr>
Jason Molenda6021b242012-10-26 23:52:49 +0000767 <tr>
768 <td class="content">
769 <b>(gdb)</b> bt 5
770 </td>
771 <td class="content">
772 <b>(lldb)</b> thread backtrace -c 5<br>
Jason Molendab856a452012-10-26 23:56:03 +0000773 <b>(lldb)</b> bt 5 (<i>lldb-169 and later</i>)<br>
774 <b>(lldb)</b> bt -c 5 (<i>lldb-168 and earlier</i>)
Jason Molenda6021b242012-10-26 23:52:49 +0000775 </td>
776 </tr>
777
Jason Molendac09b8b92011-10-22 02:31:42 +0000778 <tr><td class="header" colspan="2">Select a different stack frame by index for the current thread.</td></tr>
779 <tr>
780 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000781 <b>(gdb)</b> frame 12
Jason Molendac09b8b92011-10-22 02:31:42 +0000782 </td>
783 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000784 <b>(lldb)</b> frame select 12<br>
Jason Molendada2be4e2012-10-05 20:25:53 +0000785 <b>(lldb)</b> fr s 12<br>
786 <b>(lldb)</b> f 12<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000787 </td>
788 </tr>
789
Johnny Chen2c2d5732012-03-21 18:14:37 +0000790 <tr><td class="header" colspan="2">List information about the currently selected frame in the current thread.</td></tr>
791 <tr>
792 <td class="content">
Johnny Chen2c2d5732012-03-21 18:14:37 +0000793 </td>
794 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000795 <b>(lldb)</b> frame info<br>
Johnny Chen2c2d5732012-03-21 18:14:37 +0000796 </td>
797 </tr>
798
Jason Molendac09b8b92011-10-22 02:31:42 +0000799 <tr><td class="header" colspan="2">Select the stack frame that called the current stack frame.</td></tr>
800 <tr>
801 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000802 <b>(gdb)</b> up
Jason Molendac09b8b92011-10-22 02:31:42 +0000803 </td>
804 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000805 <b>(lldb)</b> up<br>
806 <b>(lldb)</b> frame select --relative=1<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000807 </td>
808 </tr>
809
810 <tr><td class="header" colspan="2">Select the stack frame that is called by the current stack frame.</td></tr>
811 <tr>
812 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000813 <b>(gdb)</b> down
814 </td>
815 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000816 <b>(lldb)</b> down<br>
817 <b>(lldb)</b> frame select --relative=-1<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000818 <b>(lldb)</b> fr s -r-1<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000819 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000820 </tr>
821
822 <tr><td class="header" colspan="2">Select a different stack frame using a relative offset.</td></tr>
823 <tr>
824 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000825 <b>(gdb)</b> up 2<br>
826 <b>(gdb)</b> down 3<br>
827 </td>
828 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000829 <b>(lldb)</b> frame select --relative 2<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000830 <b>(lldb)</b> fr s -r2<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000831 <br>
832 <b>(lldb)</b> frame select --relative -3<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000833 <b>(lldb)</b> fr s -r-3<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000834 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000835 </tr>
836
837 <tr><td class="header" colspan="2">Show the general purpose registers for the current thread.</td></tr>
838 <tr>
839 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000840 <b>(gdb)</b> info registers<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000841 </td>
842 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000843 <b>(lldb)</b> register read<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000844 </td>
845 </tr>
846
Greg Clayton3499e182012-10-17 20:58:52 +0000847 <tr><td class="header" colspan="2">Write a new decimal value '123' to the current thread register 'rax'.</td></tr>
848 <tr>
849 <td class="content">
850 <b>(gdb)</b> p $rax = 123<br>
851 </td>
852 <td class="content">
853 <b>(lldb)</b> register write rax 123<br>
854 </td>
855 </tr>
856
857 <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>
858 <tr>
859 <td class="content">
860 <b>(gdb)</b> jump *$pc+8<br>
861 </td>
862 <td class="content">
863 <b>(lldb)</b> register write pc `$pc+8`<br>
864 </td>
865 </tr>
866
Jason Molendaa2f701f2011-10-25 01:28:31 +0000867 <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
868 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 +0000869 <tr>
870 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000871 </td>
872 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000873 <b>(lldb)</b> register read --format i<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000874 <b>(lldb)</b> re r -f i<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000875 <br>
876 <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i><br>
877 <b>(lldb)</b> register read/d<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000878 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000879 </tr>
880
881 <tr><td class="header" colspan="2">Show all registers in all register sets for the current thread.</td></tr>
882 <tr>
883 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000884 <b>(gdb)</b> info all-registers<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000885 </td>
886 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000887 <b>(lldb)</b> register read --all<br>
888 <b>(lldb)</b> re r -a<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000889 </td>
890 </tr>
891
892 <tr><td class="header" colspan="2">Show the values for the registers named "rax", "rsp" and "rbp" in the current thread.</td></tr>
893 <tr>
894 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000895 <b>(gdb)</b> info all-registers rax rsp rbp<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000896 </td>
897 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000898 <b>(lldb)</b> register read rax rsp rbp<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000899 </td>
900 </tr>
901
902 <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>
903 <tr>
904 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000905 <b>(gdb)</b> p/t $rax<br>
906 </td>
907 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000908 <b>(lldb)</b> register read --format binary rax<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000909 <b>(lldb)</b> re r -f b rax<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000910 <br>
911 <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i><br>
912 <b>(lldb)</b> register read/t rax<br>
913 <b>(lldb)</b> p/t $rax<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000914 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000915 </tr>
916
917 <tr><td class="header" colspan="2">Read memory from address 0xbffff3c0 and show 4 hex uint32_t values.</td></tr>
918 <tr>
919 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000920 <b>(gdb)</b> x/4xw 0xbffff3c0<br>
921 </td>
922 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000923 <b>(lldb)</b> memory read --size 4 --format x --count 4 0xbffff3c0<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000924 <b>(lldb)</b> me r -s4 -fx -c4 0xbffff3c0<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000925 <b>(lldb)</b> x -s4 -fx -c4 0xbffff3c0<br>
Greg Claytone90903a2012-02-16 02:10:58 +0000926 <br>
927 <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i><br>
928 <b>(lldb)</b> memory read/4xw 0xbffff3c0<br>
929 <b>(lldb)</b> x/4xw 0xbffff3c0<br>
930 <b>(lldb)</b> memory read --gdb-format 4xw 0xbffff3c0<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000931 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000932 </tr>
933
Greg Claytone90903a2012-02-16 02:10:58 +0000934 <tr><td class="header" colspan="2">Read memory starting at the expression "argv[0]".</td></tr>
935 <tr>
936 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +0000937 <b>(gdb)</b> x argv[0]<br>
938 </td>
939 <td class="content">
Greg Claytone90903a2012-02-16 02:10:58 +0000940 <b>(lldb)</b> memory read `argv[0]`<br>
941 <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>
942 <b>(lldb)</b> memory read --size `sizeof(int)` `argv[0]`<br>
943 </td>
Greg Claytone90903a2012-02-16 02:10:58 +0000944 </tr>
945
Jason Molendac09b8b92011-10-22 02:31:42 +0000946 <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>
947 <tr>
948 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000949 <b>(gdb)</b> set logging on<br>
950 <b>(gdb)</b> set logging file /tmp/mem.txt<br>
951 <b>(gdb)</b> x/512bx 0xbffff3c0<br>
952 <b>(gdb)</b> set logging off<br>
953 </td>
Jason Molenda704506b2012-10-05 04:26:06 +0000954 <td class="content">
955 <b>(lldb)</b> memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0<br>
956 <b>(lldb)</b> me r -o/tmp/mem.txt -c512 0xbffff3c0<br>
957 <b>(lldb)</b> x/512bx -o/tmp/mem.txt 0xbffff3c0<br>
958 </td>
Jason Molendac09b8b92011-10-22 02:31:42 +0000959 </tr>
960
961 <tr><td class="header" colspan="2">Save binary memory data starting at 0x1000 and ending at 0x2000 to a file.</td></tr>
962 <tr>
Jason Molenda704506b2012-10-05 04:26:06 +0000963 <td class="content">
964 <b>(gdb)</b> dump memory /tmp/mem.bin 0x1000 0x2000
965 </td>
966 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +0000967 <b>(lldb)</b> memory read --outfile /tmp/mem.bin --binary 0x1000 0x1200<br>
Jason Molendaa2f701f2011-10-25 01:28:31 +0000968 <b>(lldb)</b> me r -o /tmp/mem.bin -b 0x1000 0x1200<br>
Jason Molendac09b8b92011-10-22 02:31:42 +0000969 </td>
970 </tr>
Greg Clayton4976e0e2012-11-19 17:47:29 +0000971 <tr><td class="header" colspan="2">Get information about a specific heap allocation (available on Mac OS X only).</td></tr>
972 <tr>
973 <td class="content">
974 <b>(gdb)</b> info malloc 0x10010d680
975 </td>
976 <td class="content">
Enrico Granata03e16772013-05-08 21:39:19 +0000977 <b>(lldb)</b> command script import lldb.macosx.heap<br>
Greg Clayton4976e0e2012-11-19 17:47:29 +0000978 <b>(lldb)</b> process launch --environment MallocStackLogging=1 -- [ARGS]<br>
979 <b>(lldb)</b> malloc_info --stack-history 0x10010d680<br>
980 </td>
981 </tr>
982 <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>
983 <tr>
984 <td class="content">
985 </td>
986 <td class="content">
Enrico Granata03e16772013-05-08 21:39:19 +0000987 <b>(lldb)</b> command script import lldb.macosx.heap<br>
Greg Clayton4976e0e2012-11-19 17:47:29 +0000988 <b>(lldb)</b> malloc_info --type 0x10010d680<br>
989 </td>
990 </tr>
991 <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>
992 <tr>
993 <td class="content">
994 </td>
995 <td class="content">
Enrico Granata03e16772013-05-08 21:39:19 +0000996 <b>(lldb)</b> command script import lldb.macosx.heap<br>
Greg Clayton4976e0e2012-11-19 17:47:29 +0000997 <b>(lldb)</b> ptr_refs EXPR <br>
998 </td>
999 </tr>
1000 <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>
1001 <tr>
1002 <td class="content">
1003 </td>
1004 <td class="content">
Enrico Granata03e16772013-05-08 21:39:19 +00001005 <b>(lldb)</b> command script import lldb.macosx.heap<br>
Greg Clayton4976e0e2012-11-19 17:47:29 +00001006 <b>(lldb)</b> cstr_refs CSTRING<br>
1007 </td>
1008 </tr>
Jason Molendac09b8b92011-10-22 02:31:42 +00001009 <tr><td class="header" colspan="2">Disassemble the current function for the current frame.</td></tr>
1010 <tr>
1011 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001012 <b>(gdb)</b> disassemble
Jason Molendac09b8b92011-10-22 02:31:42 +00001013 </td>
1014 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001015 <b>(lldb)</b> disassemble --frame<br>
1016 <b>(lldb)</b> di -f
Jason Molendac09b8b92011-10-22 02:31:42 +00001017 </td>
1018 </tr>
1019
1020 <tr><td class="header" colspan="2">Disassemble any functions named <b>main</b>.</td></tr>
1021 <tr>
1022 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001023 <b>(gdb)</b> disassemble main
Jason Molendac09b8b92011-10-22 02:31:42 +00001024 </td>
1025 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001026 <b>(lldb)</b> disassemble --name main<br>
1027 <b>(lldb)</b> di -n main
Jason Molendac09b8b92011-10-22 02:31:42 +00001028 </td>
1029 </tr>
1030
1031 <tr><td class="header" colspan="2">Disassemble an address range.</td></tr>
1032 <tr>
1033 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001034 <b>(gdb)</b> disassemble 0x1eb8 0x1ec3
Jason Molendac09b8b92011-10-22 02:31:42 +00001035 </td>
1036 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001037 <b>(lldb)</b> disassemble --start-address 0x1eb8 --end-address 0x1ec3<br>
1038 <b>(lldb)</b> di -s 0x1eb8 -e 0x1ec3<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001039 </td>
1040 </tr>
1041
1042 <tr><td class="header" colspan="2">Disassemble 20 instructions from a given address.</td></tr>
1043 <tr>
1044 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001045 <b>(gdb)</b> x/20i 0x1eb8
Jason Molendac09b8b92011-10-22 02:31:42 +00001046 </td>
1047 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001048 <b>(lldb)</b> disassemble --start-address 0x1eb8 --count 20<br>
1049 <b>(lldb)</b> di -s 0x1eb8 -c 20<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001050 </td>
1051 </tr>
1052
1053 <tr><td class="header" colspan="2">Show mixed source and disassembly for the current function for the current frame.</td></tr>
1054 <tr>
1055 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001056 n/a
Jason Molendac09b8b92011-10-22 02:31:42 +00001057 </td>
1058 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001059 <b>(lldb)</b> disassemble --frame --mixed<br>
1060 <b>(lldb)</b> di -f -m
Jason Molendac09b8b92011-10-22 02:31:42 +00001061 </td>
1062 </tr>
1063
1064 <tr><td class="header" colspan="2">Disassemble the current function for the current frame and show the opcode bytes.</td></tr>
1065 <tr>
1066 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001067 n/a
Jason Molendac09b8b92011-10-22 02:31:42 +00001068 </td>
1069 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001070 <b>(lldb)</b> disassemble --frame --bytes<br>
1071 <b>(lldb)</b> di -f -b
Jason Molendac09b8b92011-10-22 02:31:42 +00001072 </td>
1073 </tr>
1074
1075 <tr><td class="header" colspan="2">Disassemble the current source line for the current frame.</td></tr>
1076 <tr>
1077 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001078 n/a
Jason Molendac09b8b92011-10-22 02:31:42 +00001079 </td>
1080 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001081 <b>(lldb)</b> disassemble --line<br>
1082 <b>(lldb)</b> di -l
Jason Molendac09b8b92011-10-22 02:31:42 +00001083 </td>
1084 </tr>
1085
1086 </table>
1087 <p>
1088 </div>
Jason Molendaa2f701f2011-10-25 01:28:31 +00001089 <div class="postfooter"></div>
Jason Molendac09b8b92011-10-22 02:31:42 +00001090
Jason Molendaa2f701f2011-10-25 01:28:31 +00001091 <h1 class ="postheader">Executable and Shared Library Query Commands</h1>
1092 <div class="post">
Jason Molendac09b8b92011-10-22 02:31:42 +00001093
1094 <p>
1095
Jason Molendaa2f701f2011-10-25 01:28:31 +00001096 <table class="stats" width="620" cellspacing="0">
Jason Molendac09b8b92011-10-22 02:31:42 +00001097 <tr>
Jason Molendac09b8b92011-10-22 02:31:42 +00001098 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +00001099 <td class="hed" width="50%">LLDB</td>
Jason Molendac09b8b92011-10-22 02:31:42 +00001100 </tr>
1101
1102
1103 <tr><td class="header" colspan="2">List the main executable and all dependent shared libraries.</td></tr>
1104 <tr>
1105 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001106 <b>(gdb)</b> info shared<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001107 </td>
1108 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001109 <b>(lldb)</b> image list<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001110 </td>
1111 </tr>
1112
Jason Molendaee7a6632012-10-19 19:52:12 +00001113 <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 +00001114 <tr>
1115 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001116 <b>(gdb)</b> info symbol 0x1ec4<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001117 </td>
1118 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001119 <b>(lldb)</b> image lookup --address 0x1ec4<br>
1120 <b>(lldb)</b> im loo -a 0x1ec4<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001121 </td>
1122 </tr>
1123
Jason Molendaee7a6632012-10-19 19:52:12 +00001124 <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 +00001125 <tr>
1126 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001127 <b>(gdb)</b> info function &lt;FUNC_REGEX&gt;<br>
1128 </td>
1129 <td class="content">
Jim Ingham284a2a32012-09-12 00:38:19 +00001130 This one finds debug symbols:<br>
1131 <b>(lldb)</b> image lookup -r -n &lt;FUNC_REGEX&gt;<br><br>
1132 This one finds non-debug symbols:<br>
1133 <b>(lldb)</b> image lookup -r -s &lt;FUNC_REGEX&gt;<br><br>
1134 Provide a list of binaries as arguments to limit the search.
1135 </td>
Jim Ingham284a2a32012-09-12 00:38:19 +00001136 </tr>
1137
Jim Ingham28ba5252013-04-18 22:03:01 +00001138 <tr><td class="header" colspan="2">Find full souce line information.</td></tr>
1139 <tr>
1140 <td class="content">
1141 <b>(gdb)</b> info line 0x1ec4<br>
1142 </td>
1143 <td class="content">
1144 This one is a bit messy at present. Do:<br><br>
1145 <b>(lldb)</b> image lookup -v --address 0x1ec4<br><br>
1146 and look for the LineEntry line, which will have the full source path and
1147 line range information.<br>
1148 </td>
1149 </tr>
1150
Sean Callananc6b4f9e2013-05-13 18:30:58 +00001151 <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 +00001152 <tr>
1153 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +00001154 </td>
1155 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001156 <b>(lldb)</b> image lookup --address 0x1ec4 a.out<br>
1157 <b>(lldb)</b> im loo -a 0x1ec4 a.out<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001158 </td>
1159 </tr>
1160
Jason Molendaee7a6632012-10-19 19:52:12 +00001161 <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 +00001162 <tr>
1163 <td class="content">
Jason Molendaee7a6632012-10-19 19:52:12 +00001164 <b>(gdb)</b> ptype Point<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001165 </td>
1166 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001167 <b>(lldb)</b> image lookup --type Point<br>
1168 <b>(lldb)</b> im loo -t Point<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001169 </td>
1170 </tr>
1171
1172 <tr><td class="header" colspan="2">Dump all sections from the main executable and any shared libraries.</td></tr>
1173 <tr>
1174 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001175 <b>(gdb)</b> maintenance info sections<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001176 </td>
1177 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001178 <b>(lldb)</b> image dump sections<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001179 </td>
1180 </tr>
1181
1182 <tr><td class="header" colspan="2">Dump all sections in the <b>a.out</b> module.</td></tr>
1183 <tr>
1184 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +00001185 </td>
1186 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001187 <b>(lldb)</b> image dump sections a.out<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001188 </td>
1189 </tr>
1190
1191 <tr><td class="header" colspan="2">Dump all symbols from the main executable and any shared libraries.</td></tr>
1192 <tr>
1193 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +00001194 </td>
1195 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001196 <b>(lldb)</b> image dump symtab<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001197 </td>
1198 </tr>
1199
1200 <tr><td class="header" colspan="2">Dump all symbols in <b>a.out</b> and <b>liba.so</b>.</td></tr>
1201 <tr>
1202 <td class="content">
Jason Molendac09b8b92011-10-22 02:31:42 +00001203 </td>
1204 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001205 <b>(lldb)</b> image dump symtab a.out liba.so<br>
Jason Molendac09b8b92011-10-22 02:31:42 +00001206 </td>
1207 </tr>
1208
1209 </table>
1210 <p>
1211 </div>
Jim Ingham8ec35132012-05-11 18:01:15 +00001212 <div class="postfooter"></div>
1213 <h1 class ="postheader">Miscellaneous</h1>
1214 <div class="post">
1215 <p>
1216 <table class="stats" width="620" cellspacing="0">
1217 <tr>
Jim Ingham8ec35132012-05-11 18:01:15 +00001218 <td class="hed" width="50%">GDB</td>
Jason Molenda704506b2012-10-05 04:26:06 +00001219 <td class="hed" width="50%">LLDB</td>
Jim Ingham8ec35132012-05-11 18:01:15 +00001220 </tr>
1221
1222 <tr><td class="header" colspan="2">Echo text to the screen.</td></tr>
1223 <tr>
1224 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001225 <b>(gdb)</b> echo Here is some text\n<br>
Jim Ingham8ec35132012-05-11 18:01:15 +00001226 </td>
1227 <td class="content">
Jason Molenda704506b2012-10-05 04:26:06 +00001228 <b>(lldb)</b> script print &quot;Here is some text&quot;<br>
Jim Ingham8ec35132012-05-11 18:01:15 +00001229 </td>
1230 </tr>
1231
Jason Molenda0a07c0e2012-10-26 04:38:09 +00001232 <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>
1233 <tr>
1234 <td class="content">
1235 <b>(gdb)</b> set pathname-substitutions /buildbot/path /my/path<br>
1236 </td>
1237 <td class="content">
1238 <b>(lldb)</b> settings set target.source-map /buildbot/path /my/path<br>
1239 </td>
1240 </tr>
1241
1242 <tr><td class="header" colspan="2">Supply a catchall directory to search for source files in.</td></tr>
1243 <tr>
1244 <td class="content">
1245 <b>(gdb)</b> directory /my/path<br>
1246 </td>
1247 <td class="content">
Jim Inghamcf9d2e92013-06-24 19:37:49 +00001248 (<i>No equivalent command - use the source-map instead.)<br>
Jason Molenda0a07c0e2012-10-26 04:38:09 +00001249 </td>
1250 </tr>
1251
Jim Ingham8ec35132012-05-11 18:01:15 +00001252 </table>
1253 <p>
1254 </div>
1255
Jason Molendaa2f701f2011-10-25 01:28:31 +00001256 <div class="postfooter"></div>
Jason Molendac09b8b92011-10-22 02:31:42 +00001257
1258 <p>
1259
Jason Molendaa2f701f2011-10-25 01:28:31 +00001260
Jason Molendac09b8b92011-10-22 02:31:42 +00001261 </div>
Jason Molendaa2f701f2011-10-25 01:28:31 +00001262 </div>
1263 </div>
Jason Molendac09b8b92011-10-22 02:31:42 +00001264</div>
1265</body>
1266</html>