xref: /llvm-project-15.0.7/lldb/docs/use/map.rst (revision 103ad3f9)
1GDB to LLDB command map
2=======================
3
4Below is a table of GDB commands with the LLDB counterparts. The built in
5GDB-compatibility aliases in LLDB are also listed. The full lldb command names
6are often long, but any unique short form can be used. Instead of "**breakpoint
7set**", "**br se**" is also acceptable.
8
9.. contents::
10   :local:
11
12Execution Commands
13------------------
14
15.. raw:: html
16
17   <table class="mapping" cellspacing="0">
18      <tbody>
19         <tr>
20               <td class="hed" width="50%">GDB</td>
21               <td class="hed" width="50%">LLDB</td>
22         </tr>
23
24         <tr>
25               <td class="header" colspan="2">Launch a process no arguments.</td>
26         </tr>
27         <tr>
28               <td class="content">
29                  <b>(gdb)</b> run
30                  <br>
31                  <b>(gdb)</b> r
32               </td>
33               <td class="content">
34                  <b>(lldb)</b> process launch
35                  <br>
36                  <b>(lldb)</b> run
37                  <br>
38                  <b>(lldb)</b> r
39               </td>
40         </tr>
41
42         <tr>
43               <td class="header" colspan="2">Launch a process with arguments <code>&lt;args&gt;</code>.</td>
44         </tr>
45         <tr>
46               <td class="content">
47                  <b>(gdb)</b> run &lt;args&gt;
48                  <br>
49                  <b>(gdb)</b> r &lt;args&gt;
50               </td>
51               <td class="content">
52                  <b>(lldb)</b> process launch -- &lt;args&gt;
53                  <br>
54                  <b>(lldb)</b> run &lt;args&gt;
55                  <br>
56                  <b>(lldb)</b> r &lt;args&gt;
57               </td>
58         </tr>
59
60         <tr>
61               <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>
62         </tr>
63         <tr>
64               <td class="content">
65                  <b>%</b> gdb --args a.out 1 2 3
66                  <br>
67                  <b>(gdb)</b> run
68                  <br> ...
69                  <br>
70                  <b>(gdb)</b> run
71                  <br> ...
72                  <br>
73               </td>
74               <td class="content">
75                  <b>%</b> lldb -- a.out 1 2 3
76                  <br>
77                  <b>(lldb)</b> run
78                  <br> ...
79                  <br>
80                  <b>(lldb)</b> run
81                  <br> ...
82                  <br>
83               </td>
84         </tr>
85
86         <tr>
87               <td class="header" colspan="2">Or:</td>
88         </tr>
89         <tr>
90               <td class="content">
91                  <b>(gdb)</b> set args 1 2 3
92                  <br>
93                  <b>(gdb)</b> run
94                  <br> ...
95                  <br>
96                  <b>(gdb)</b> run
97                  <br> ...
98                  <br>
99               </td>
100               <td class="content">
101                  <b>(lldb)</b> settings set target.run-args 1 2 3
102                  <br>
103                  <b>(lldb)</b> run
104                  <br> ...
105                  <br>
106                  <b>(lldb)</b> run
107                  <br> ...
108                  <br>
109               </td>
110         </tr>
111
112         <tr>
113               <td class="header" colspan="2">Launch a process with arguments in new terminal window (macOS only).</td>
114         </tr>
115         <tr>
116               <td class="content">
117               </td>
118               <td class="content">
119                  <b>(lldb)</b> process launch --tty -- &lt;args&gt;
120                  <br>
121                  <b>(lldb)</b> pro la -t -- &lt;args&gt;
122                  <br>
123               </td>
124         </tr>
125
126         <tr>
127               <td class="header" colspan="2">Launch a process with arguments in existing terminal
128                  <cope>/dev/ttys006 (macOS only).</cope>
129               </td>
130         </tr>
131         <tr>
132               <td class="content">
133               </td>
134               <td class="content">
135                  <b>(lldb)</b> process launch --tty=/dev/ttys006 -- &lt;args&gt;
136                  <br>
137                  <b>(lldb)</b> pro la -t/dev/ttys006 -- &lt;args&gt;
138                  <br>
139               </td>
140         </tr>
141
142         <tr>
143               <td class="header" colspan="2">Set environment variables for process before launching.</td>
144         </tr>
145         <tr>
146               <td class="content">
147                  <b>(gdb)</b> set env DEBUG 1
148                  <br>
149               </td>
150               <td class="content">
151                  <b>(lldb)</b> settings set target.env-vars DEBUG=1
152                  <br>
153                  <b>(lldb)</b> set se target.env-vars DEBUG=1
154                  <br>
155                  <b>(lldb)</b> env DEBUG=1
156                  <br>
157               </td>
158         </tr>
159
160         <tr>
161               <td class="header" colspan="2">Unset environment variables for process before launching.</td>
162         </tr>
163         <tr>
164               <td class="content">
165                  <b>(gdb)</b> unset env DEBUG
166                  <br>
167               </td>
168               <td class="content">
169                  <b>(lldb)</b> settings remove target.env-vars DEBUG
170                  <br>
171                  <b>(lldb)</b> set rem target.env-vars DEBUG
172                  <br>
173               </td>
174         </tr>
175
176         <tr>
177               <td class="header" colspan="2">Show the arguments that will be or were passed to the program when run.</td>
178         </tr>
179         <tr>
180               <td class="content">
181                  <b>(gdb)</b> show args
182                  <br> Argument list to give program being debugged when it is started is "1 2 3".
183                  <br>
184               </td>
185               <td class="content">
186                  <b>(lldb)</b> settings show target.run-args
187                  <br> target.run-args (array of strings) =
188                  <br> [0]: "1"
189                  <br> [1]: "2"
190                  <br> [2]: "3"
191                  <br>
192               </td>
193         </tr>
194
195         <tr>
196               <td class="header" colspan="2">Set environment variables for process and launch process in one command.</td>
197         </tr>
198         <tr>
199               <td class="content">
200               </td>
201               <td class="content">
202                  <b>(lldb)</b> process launch -E DEBUG=1
203                  <br>
204               </td>
205         </tr>
206
207         <tr>
208               <td class="header" colspan="2">Attach to a process with process ID 123.</td>
209         </tr>
210         <tr>
211               <td class="content">
212                  <b>(gdb)</b> attach 123
213               </td>
214               <td class="content">
215                  <b>(lldb)</b> process attach --pid 123
216                  <br>
217                  <b>(lldb)</b> attach -p 123
218               </td>
219         </tr>
220
221         <tr>
222               <td class="header" colspan="2">Attach to a process named "a.out".</td>
223         </tr>
224         <tr>
225               <td class="content">
226                  <b>(gdb)</b> attach a.out
227               </td>
228               <td class="content">
229                  <b>(lldb)</b> process attach --name a.out
230                  <br>
231                  <b>(lldb)</b> pro at -n a.out
232               </td>
233         </tr>
234
235         <tr>
236               <td class="header" colspan="2">Wait for a process named "a.out" to launch and attach.</td>
237         </tr>
238         <tr>
239               <td class="content">
240                  <b>(gdb)</b> attach -waitfor a.out
241               </td>
242               <td class="content">
243                  <b>(lldb)</b> process attach --name a.out --waitfor
244                  <br>
245                  <b>(lldb)</b> pro at -n a.out -w
246               </td>
247         </tr>
248
249         <tr>
250               <td class="header" colspan="2">Attach to a remote gdb protocol server running on system "eorgadd", port 8000.</td>
251         </tr>
252         <tr>
253               <td class="content">
254                  <b>(gdb)</b> target remote eorgadd:8000
255               </td>
256               <td class="content">
257                  <b>(lldb)</b> gdb-remote eorgadd:8000
258               </td>
259         </tr>
260
261         <tr>
262               <td class="header" colspan="2">Attach to a remote gdb protocol server running on the local system, port 8000.</td>
263         </tr>
264         <tr>
265               <td class="content">
266                  <b>(gdb)</b> target remote localhost:8000
267               </td>
268               <td class="content">
269                  <b>(lldb)</b> gdb-remote 8000
270               </td>
271         </tr>
272
273         <tr>
274               <td class="header" colspan="2">Attach to a Darwin kernel in kdp mode on system "eorgadd".</td>
275         </tr>
276         <tr>
277               <td class="content">
278                  <b>(gdb)</b> kdp-reattach eorgadd
279               </td>
280               <td class="content">
281                  <b>(lldb)</b> kdp-remote eorgadd
282               </td>
283         </tr>
284
285         <tr>
286               <td class="header" colspan="2">Do a source level single step in the currently selected thread.</td>
287         </tr>
288         <tr>
289               <td class="content">
290                  <b>(gdb)</b> step
291                  <br>
292                  <b>(gdb)</b> s
293               </td>
294               <td class="content">
295                  <b>(lldb)</b> thread step-in
296                  <br>
297                  <b>(lldb)</b> step
298                  <br>
299                  <b>(lldb)</b> s
300               </td>
301         </tr>
302
303         <tr>
304               <td class="header" colspan="2">Do a source level single step over in the currently selected thread.</td>
305         </tr>
306         <tr>
307               <td class="content">
308                  <b>(gdb)</b> next
309                  <br>
310                  <b>(gdb)</b> n
311               </td>
312               <td class="content">
313                  <b>(lldb)</b> thread step-over
314                  <br>
315                  <b>(lldb)</b> next
316                  <br>
317                  <b>(lldb)</b> n
318                  <br>
319               </td>
320         </tr>
321
322         <tr>
323               <td class="header" colspan="2">Do an instruction level single step in the currently selected thread.</td>
324         </tr>
325         <tr>
326               <td class="content">
327                  <b>(gdb)</b> stepi
328                  <br>
329                  <b>(gdb)</b> si
330               </td>
331               <td class="content">
332                  <b>(lldb)</b> thread step-inst
333                  <br>
334                  <b>(lldb)</b> si
335                  <br>
336               </td>
337         </tr>
338
339         <tr>
340               <td class="header" colspan="2">Do an instruction level single step over in the currently selected thread.</td>
341         </tr>
342         <tr>
343               <td class="content">
344                  <b>(gdb)</b> nexti
345                  <br>
346                  <b>(gdb)</b> ni
347               </td>
348               <td class="content">
349                  <b>(lldb)</b> thread step-inst-over
350                  <br>
351                  <b>(lldb)</b> ni
352               </td>
353         </tr>
354
355         <tr>
356               <td class="header" colspan="2">Step out of the currently selected frame.</td>
357         </tr>
358         <tr>
359               <td class="content">
360                  <b>(gdb)</b> finish
361                  <br>
362               </td>
363               <td class="content">
364                  <b>(lldb)</b> thread step-out
365                  <br>
366                  <b>(lldb)</b> finish
367                  <br>
368               </td>
369         </tr>
370
371         <tr>
372               <td class="header" colspan="2">Return immediately from the currently selected frame, with an optional return value.</td>
373         </tr>
374         <tr>
375               <td class="content">
376                  <b>(gdb)</b> return &lt;RETURN EXPRESSION&gt;
377                  <br>
378               </td>
379               <td class="content">
380                  <b>(lldb)</b> thread return &lt;RETURN EXPRESSION&gt;
381                  <br>
382               </td>
383         </tr>
384
385         <tr>
386               <td class="header" colspan="2">Backtrace and disassemble every time you stop.</td>
387         </tr>
388         <tr>
389               <td class="content">
390               </td>
391               <td class="content">
392                  <b>(lldb)</b> target stop-hook add
393                  <br> Enter your stop hook command(s). Type 'DONE' to end.
394                  <br> &gt; bt
395                  <br> &gt; disassemble --pc
396                  <br> &gt; DONE
397                  <br> Stop hook #1 added.
398                  <br>
399               </td>
400         </tr>
401         <tr>
402               <td class="header" colspan="2">Run until we hit line <b>12</b> or control leaves the current function.</td>
403         </tr>
404         <tr>
405               <td class="content">
406                  <b>(gdb)</b> until 12
407               </td>
408               <td class="content">
409                  <b>(lldb)</b> thread until 12
410               </td>
411         </tr>
412
413      </tbody>
414   </table>
415
416
417Breakpoint Commands
418-------------------
419
420.. raw:: html
421
422   <table class="mapping" cellspacing="0">
423      <tbody>
424         <tr>
425               <td class="hed" width="50%">GDB</td>
426               <td class="hed" width="50%">LLDB</td>
427         </tr>
428
429         <tr>
430               <td class="header" colspan="2">Set a breakpoint at all functions named <b>main</b>.</td>
431         </tr>
432         <tr>
433               <td class="content">
434                  <b>(gdb)</b> break main
435               </td>
436               <td class="content">
437                  <b>(lldb)</b> breakpoint set --name main
438                  <br>
439                  <b>(lldb)</b> br s -n main
440                  <br>
441                  <b>(lldb)</b> b main
442               </td>
443         </tr>
444
445         <tr>
446               <td class="header" colspan="2">Set a breakpoint in file <b>test.c</b> at line <b>12</b>.</td>
447         </tr>
448         <tr>
449               <td class="content">
450                  <b>(gdb)</b> break test.c:12
451               </td>
452               <td class="content">
453                  <b>(lldb)</b> breakpoint set --file test.c --line 12
454                  <br>
455                  <b>(lldb)</b> br s -f test.c -l 12
456                  <br>
457                  <b>(lldb)</b> b test.c:12
458               </td>
459         </tr>
460
461         <tr>
462               <td class="header" colspan="2">Set a breakpoint at all C++ methods whose basename is <b>main</b>.</td>
463         </tr>
464         <tr>
465               <td class="content">
466                  <b>(gdb)</b> break main
467                  <br>
468                  <i>(Hope that there are no C functions named <b>main</b>)</i>.
469               </td>
470               <td class="content">
471                  <b>(lldb)</b> breakpoint set --method main
472                  <br>
473                  <b>(lldb)</b> br s -M main
474                  <br>
475               </td>
476         </tr>
477
478         <tr>
479               <td class="header" colspan="2">Set a breakpoint at and object C function: <b>-[NSString stringWithFormat:]</b>.</td>
480         </tr>
481         <tr>
482               <td class="content">
483                  <b>(gdb)</b> break -[NSString stringWithFormat:]
484                  <br>
485               </td>
486               <td class="content">
487                  <b>(lldb)</b> breakpoint set --name "-[NSString stringWithFormat:]"
488                  <br>
489                  <b>(lldb)</b> b -[NSString stringWithFormat:]
490                  <br>
491               </td>
492         </tr>
493
494         <tr>
495               <td class="header" colspan="2">Set a breakpoint at all Objective-C methods whose selector is <b>count</b>.</td>
496         </tr>
497         <tr>
498               <td class="content">
499                  <b>(gdb)</b> break count
500                  <br>
501                  <i>(Hope that there are no C or C++ functions named <b>count</b>)</i>.
502               </td>
503               <td class="content">
504                  <b>(lldb)</b> breakpoint set --selector count
505                  <br>
506                  <b>(lldb)</b> br s -S count
507                  <br>
508               </td>
509         </tr>
510         <tr>
511               <td class="header" colspan="2">Set a breakpoint by regular expression on function name.</td>
512         </tr>
513
514         <tr>
515               <td class="content">
516                  <b>(gdb)</b> rbreak regular-expression
517                  <br>
518               </td>
519               <td class="content">
520                  <b>(lldb)</b> breakpoint set --func-regex regular-expression
521                  <br>
522                  <b>(lldb)</b> br s -r regular-expression
523                  <br>
524               </td>
525         </tr>
526
527         <tr>
528               <td class="header" colspan="2">Ensure that breakpoints by file and line work for #included .c/.cpp/.m files.</td>
529         </tr>
530
531         <tr>
532               <td class="content">
533                  <b>(gdb)</b> b foo.c:12
534                  <br>
535               </td>
536               <td class="content">
537                  <b>(lldb)</b> settings set target.inline-breakpoint-strategy always
538                  <br>
539                  <b>(lldb)</b> br s -f foo.c -l 12
540                  <br>
541               </td>
542         </tr>
543
544         <tr>
545               <td class="header" colspan="2">Set a breakpoint by regular expression on source file contents.</td>
546         </tr>
547
548         <tr>
549               <td class="content">
550                  <b>(gdb)</b> shell grep -e -n pattern source-file
551                  <br>
552                  <b>(gdb)</b> break source-file:CopyLineNumbers
553                  <br>
554               </td>
555               <td class="content">
556                  <b>(lldb)</b> breakpoint set --source-pattern regular-expression --file SourceFile
557                  <br>
558                  <b>(lldb)</b> br s -p regular-expression -f file
559                  <br>
560               </td>
561         </tr>
562
563         <tr>
564               <td class="header" colspan="2">Set a conditional breakpoint</td>
565         </tr>
566
567         <tr>
568               <td class="content">
569                  <b>(gdb)</b> break foo if strcmp(y,"hello") == 0
570                  <br>
571               </td>
572               <td class="content">
573                  <b>(lldb)</b> breakpoint set --name foo --condition '(int)strcmp(y,"hello") == 0'
574                  <br>
575                  <b>(lldb)</b> br s -n foo -c '(int)strcmp(y,"hello") == 0'
576                  <br>
577               </td>
578         </tr>
579
580         <tr>
581               <td class="header" colspan="2">List all breakpoints.</td>
582         </tr>
583         <tr>
584               <td class="content">
585                  <b>(gdb)</b> info break
586                  <br>
587               </td>
588               <td class="content">
589                  <b>(lldb)</b> breakpoint list
590                  <br>
591                  <b>(lldb)</b> br l
592                  <br>
593               </td>
594         </tr>
595
596         <tr>
597               <td class="header" colspan="2">Delete a breakpoint.</td>
598         </tr>
599         <tr>
600               <td class="content">
601                  <b>(gdb)</b> delete 1
602                  <br>
603               </td>
604               <td class="content">
605                  <b>(lldb)</b> breakpoint delete 1
606                  <br>
607                  <b>(lldb)</b> br del 1
608                  <br>
609               </td>
610         </tr>
611
612         <tr>
613               <td class="header" colspan="2">Disable a breakpoint.</td>
614         </tr>
615         <tr>
616               <td class="content">
617                  <b>(gdb)</b> disable 1
618                  <br>
619               </td>
620               <td class="content">
621                  <b>(lldb)</b> breakpoint disable 1
622                  <br>
623                  <b>(lldb)</b> br dis 1
624                  <br>
625               </td>
626         </tr>
627
628         <tr>
629               <td class="header" colspan="2">Enable a breakpoint.</td>
630         </tr>
631         <tr>
632               <td class="content">
633                  <b>(gdb)</b> enable 1
634                  <br>
635               </td>
636               <td class="content">
637                  <b>(lldb)</b> breakpoint enable 1
638                  <br>
639                  <b>(lldb)</b> br en 1
640                  <br>
641               </td>
642         </tr>
643
644      </tbody>
645   </table>
646
647
648Watchpoint Commands
649-------------------
650
651.. raw:: html
652
653   <table class="mapping" cellspacing="0">
654      <tbody>
655         <tr>
656               <td class="hed" width="50%">GDB</td>
657               <td class="hed" width="50%">LLDB</td>
658         </tr>
659
660         <tr>
661               <td class="header" colspan="2">Set a watchpoint on a variable when it is written to.</td>
662         </tr>
663         <tr>
664               <td class="content">
665                  <b>(gdb)</b> watch global_var
666               </td>
667               <td class="content">
668                  <b>(lldb)</b> watchpoint set variable global_var
669                  <br>
670                  <b>(lldb)</b> wa s v global_var
671                  <br>
672               </td>
673         </tr>
674
675         <tr>
676               <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. 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>
677         </tr>
678         <tr>
679               <td class="content">
680                  <b>(gdb)</b> watch -location g_char_ptr
681               </td>
682               <td class="content">
683                  <b>(lldb)</b> watchpoint set expression -- my_ptr
684                  <br>
685                  <b>(lldb)</b> wa s e -- my_ptr
686                  <br>
687               </td>
688         </tr>
689
690         <tr>
691               <td class="header" colspan="2">Set a condition on a watchpoint.</td>
692         </tr>
693         <tr>
694               <td class="content">
695               </td>
696               <td class="content">
697                  <b>(lldb)</b> watch set var global
698                  <br>
699                  <b>(lldb)</b> watchpoint modify -c '(global==5)'
700                  <br>
701                  <b>(lldb)</b> c
702                  <br> ...
703                  <br>
704                  <b>(lldb)</b> bt
705                  <br> * thread #1: tid = 0x1c03, 0x0000000100000ef5 a.out`modify + 21 at main.cpp:16, stop reason = watchpoint 1
706                  <br> frame #0: 0x0000000100000ef5 a.out`modify + 21 at main.cpp:16
707                  <br> frame #1: 0x0000000100000eac a.out`main + 108 at main.cpp:25
708                  <br> frame #2: 0x00007fff8ac9c7e1 libdyld.dylib`start + 1
709                  <br>
710                  <b>(lldb)</b> frame var global
711                  <br> (int32_t) global = 5
712                  <br>
713               </td>
714         </tr>
715
716         <tr>
717               <td class="header" colspan="2">List all watchpoints.</td>
718         </tr>
719         <tr>
720               <td class="content">
721                  <b>(gdb)</b> info break
722                  <br>
723               </td>
724               <td class="content">
725                  <b>(lldb)</b> watchpoint list
726                  <br>
727                  <b>(lldb)</b> watch l
728                  <br>
729               </td>
730         </tr>
731
732         <tr>
733               <td class="header" colspan="2">Delete a watchpoint.</td>
734         </tr>
735         <tr>
736               <td class="content">
737                  <b>(gdb)</b> delete 1
738                  <br>
739               </td>
740               <td class="content">
741                  <b>(lldb)</b> watchpoint delete 1
742                  <br>
743                  <b>(lldb)</b> watch del 1
744                  <br>
745               </td>
746         </tr>
747
748      </tbody>
749   </table>
750
751
752Examining Variables
753-------------------
754
755.. raw:: html
756
757   <table class="mapping" cellspacing="0">
758      <tbody>
759         <tr>
760               <td class="hed" width="50%">GDB</td>
761               <td class="hed" width="50%">LLDB</td>
762         </tr>
763
764         <tr>
765               <td class="header" colspan="2">Show the arguments and local variables for the current frame.</td>
766         </tr>
767         <tr>
768               <td class="content">
769                  <b>(gdb)</b> info args
770                  <br> and
771                  <br>
772                  <b>(gdb)</b> info locals
773                  <br>
774               </td>
775               <td class="content">
776                  <b>(lldb)</b> frame variable
777                  <br>
778                  <b>(lldb)</b> fr v
779                  <br>
780               </td>
781         </tr>
782
783         <tr>
784               <td class="header" colspan="2">Show the local variables for the current frame.</td>
785         </tr>
786         <tr>
787               <td class="content">
788                  <b>(gdb)</b> info locals
789                  <br>
790               </td>
791               <td class="content">
792                  <b>(lldb)</b> frame variable --no-args
793                  <br>
794                  <b>(lldb)</b> fr v -a
795                  <br>
796               </td>
797         </tr>
798
799         <tr>
800               <td class="header" colspan="2">Show the contents of local variable "bar".</td>
801         </tr>
802         <tr>
803               <td class="content">
804                  <b>(gdb)</b> p bar
805                  <br>
806               </td>
807               <td class="content">
808                  <b>(lldb)</b> frame variable bar
809                  <br>
810                  <b>(lldb)</b> fr v bar
811                  <br>
812                  <b>(lldb)</b> p bar
813                  <br>
814               </td>
815         </tr>
816
817         <tr>
818               <td class="header" colspan="2">Show the contents of local variable "bar" formatted as hex.</td>
819         </tr>
820         <tr>
821               <td class="content">
822                  <b>(gdb)</b> p/x bar
823                  <br>
824               </td>
825               <td class="content">
826                  <b>(lldb)</b> frame variable --format x bar
827                  <br>
828                  <b>(lldb)</b> fr v -f x bar
829                  <br>
830               </td>
831         </tr>
832
833         <tr>
834               <td class="header" colspan="2">Show the contents of global variable "baz".</td>
835         </tr>
836         <tr>
837               <td class="content">
838                  <b>(gdb)</b> p baz
839                  <br>
840               </td>
841               <td class="content">
842                  <b>(lldb)</b> target variable baz
843                  <br>
844                  <b>(lldb)</b> ta v baz
845                  <br>
846               </td>
847         </tr>
848
849         <tr>
850               <td class="header" colspan="2">Show the global/static variables defined in the current source file.</td>
851         </tr>
852         <tr>
853               <td class="content">
854                  n/a
855                  <br>
856               </td>
857               <td class="content">
858                  <b>(lldb)</b> target variable
859                  <br>
860                  <b>(lldb)</b> ta v
861                  <br>
862               </td>
863         </tr>
864
865         <tr>
866               <td class="header" colspan="2">Display the variables "argc" and "argv" every time you stop.</td>
867         </tr>
868         <tr>
869               <td class="content">
870                  <b>(gdb)</b> display argc
871                  <br>
872                  <b>(gdb)</b> display argv
873                  <br>
874               </td>
875               <td class="content">
876                  <b>(lldb)</b> target stop-hook add --one-liner "frame variable argc argv"
877                  <br>
878                  <b>(lldb)</b> ta st a -o "fr v argc argv"
879                  <br>
880                  <b>(lldb)</b> display argc
881                  <br>
882                  <b>(lldb)</b> display argv
883                  <br>
884               </td>
885         </tr>
886
887         <tr>
888               <td class="header" colspan="2">Display the variables "argc" and "argv" only when you stop in the function named <b>main</b>.</td>
889         </tr>
890         <tr>
891               <td class="content">
892               </td>
893               <td class="content">
894                  <b>(lldb)</b> target stop-hook add --name main --one-liner "frame variable argc argv"
895                  <br>
896                  <b>(lldb)</b> ta st a -n main -o "fr v argc argv"
897                  <br>
898               </td>
899         </tr>
900
901         <tr>
902               <td class="header" colspan="2">Display the variable "*this" only when you stop in c class named <b>MyClass</b>.</td>
903         </tr>
904         <tr>
905               <td class="content">
906               </td>
907               <td class="content">
908                  <b>(lldb)</b> target stop-hook add --classname MyClass --one-liner "frame variable *this"
909                  <br>
910                  <b>(lldb)</b> ta st a -c MyClass -o "fr v *this"
911                  <br>
912               </td>
913         </tr>
914
915         <tr>
916               <td class="header" colspan="2">Print an array of integers in memory, assuming we have a pointer like "int *ptr".</td>
917         </tr>
918         <tr>
919               <td class="content">
920                  <b>(gdb)</b> p *ptr@10
921                  <br>
922               </td>
923               <td class="content">
924                  <b>(lldb)</b> parray 10 ptr
925                  <br>
926               </td>
927         </tr>
928
929      </tbody>
930   </table>
931
932Evaluating Expressions
933----------------------
934
935.. raw:: html
936
937   <table class="mapping" cellspacing="0">
938      <tbody>
939         <tr>
940               <td class="hed" width="50%">GDB</td>
941               <td class="hed" width="50%">LLDB</td>
942         </tr>
943
944         <tr>
945               <td class="header" colspan="2">Evaluating a generalized expression in the current frame.</td>
946         </tr>
947         <tr>
948               <td class="content">
949                  <b>(gdb)</b> print (int) printf ("Print nine: %d.", 4 + 5)
950                  <br> or if you don't want to see void returns:
951                  <br>
952                  <b>(gdb)</b> call (int) printf ("Print nine: %d.", 4 + 5)
953                  <br>
954               </td>
955               <td class="content">
956                  <b>(lldb)</b> expr (int) printf ("Print nine: %d.", 4 + 5)
957                  <br> or using the print alias:
958                  <br>
959                  <b>(lldb)</b> print (int) printf ("Print nine: %d.", 4 + 5)
960                  <br>
961               </td>
962         </tr>
963
964         <tr>
965               <td class="header" colspan="2">Creating and assigning a value to a convenience variable.</td>
966         </tr>
967         <tr>
968               <td class="content">
969                  <b>(gdb)</b> set $foo = 5
970                  <br>
971                  <b>(gdb)</b> set variable $foo = 5
972                  <br> or using the print command
973                  <br>
974                  <b>(gdb)</b> print $foo = 5
975                  <br> or using the call command
976                  <br>
977                  <b>(gdb)</b> call $foo = 5
978                  <br> and if you want to specify the type of the variable:
979                  <b>(gdb)</b> set $foo = (unsigned int) 5
980                  <br>
981
982               </td>
983               <td class="content">
984                  In lldb you evaluate a variable declaration expression as you would write it in C:
985                  <br>
986                  <b>(lldb)</b> expr unsigned int $foo = 5
987                  <br>
988               </td>
989         </tr>
990
991         <tr>
992               <td class="header" colspan="2">Printing the ObjC "description" of an object.</td>
993         </tr>
994         <tr>
995               <td class="content">
996                  <b>(gdb)</b> po [SomeClass returnAnObject]
997                  <br>
998               </td>
999               <td class="content">
1000                  <b>(lldb)</b> expr -o -- [SomeClass returnAnObject]
1001                  <br> or using the po alias:
1002                  <br>
1003                  <b>(lldb)</b> po [SomeClass returnAnObject]
1004                  <br>
1005               </td>
1006         </tr>
1007
1008         <tr>
1009               <td class="header" colspan="2">Print the dynamic type of the result of an expression.</td>
1010         </tr>
1011         <tr>
1012               <td class="content">
1013                  <b>(gdb)</b> set print object 1
1014                  <br>
1015                  <b>(gdb)</b> p someCPPObjectPtrOrReference
1016                  <br> only works for C++ objects.
1017                  <br>
1018               </td>
1019               <td class="content">
1020                  <b>(lldb)</b> expr -d 1 -- [SomeClass returnAnObject]
1021                  <br>
1022                  <b>(lldb)</b> expr -d 1 -- someCPPObjectPtrOrReference
1023                  <br> or set dynamic type printing to be the default:
1024                  <b>(lldb)</b> settings set target.prefer-dynamic run-target
1025                  <br>
1026               </td>
1027         </tr>
1028
1029         <tr>
1030               <td class="header" colspan="2">Calling a function so you can stop at a breakpoint in the function.</td>
1031         </tr>
1032         <tr>
1033               <td class="content">
1034                  <b>(gdb)</b> set unwindonsignal 0
1035                  <br>
1036                  <b>(gdb)</b> p function_with_a_breakpoint()
1037                  <br>
1038               </td>
1039               <td class="content">
1040                  <b>(lldb)</b> expr -i 0 -- function_with_a_breakpoint()
1041                  <br>
1042               </td>
1043         </tr>
1044
1045         <tr>
1046               <td class="header" colspan="2">Calling a function that crashes, and stopping when the function crashes.</td>
1047         </tr>
1048         <tr>
1049               <td class="content">
1050                  <b>(gdb)</b> set unwindonsignal 0
1051                  <br>
1052                  <b>(gdb)</b> p function_which_crashes()
1053                  <br>
1054               </td>
1055               <td class="content">
1056                  <b>(lldb)</b> expr -u 0 -- function_which_crashes()
1057                  <br>
1058               </td>
1059         </tr>
1060
1061      </tbody>
1062   </table>
1063
1064Examining Thread State
1065----------------------
1066
1067.. raw:: html
1068
1069   <table class="mapping" cellspacing="0">
1070      <tbody>
1071         <tr>
1072               <td class="hed" width="50%">GDB</td>
1073               <td class="hed" width="50%">LLDB</td>
1074         </tr>
1075
1076         <tr>
1077               <td class="header" colspan="2">List the threads in your program.</td>
1078         </tr>
1079         <tr>
1080               <td class="content">
1081                  <b>(gdb)</b> info threads
1082                  <br>
1083               </td>
1084               <td class="content">
1085                  <b>(lldb)</b> thread list
1086                  <br>
1087               </td>
1088         </tr>
1089
1090         <tr>
1091               <td class="header" colspan="2">Select thread 1 as the default thread for subsequent commands.</td>
1092         </tr>
1093         <tr>
1094               <td class="content">
1095                  <b>(gdb)</b> thread 1
1096                  <br>
1097               </td>
1098               <td class="content">
1099                  <b>(lldb)</b> thread select 1
1100                  <br>
1101                  <b>(lldb)</b> t 1
1102                  <br>
1103               </td>
1104         </tr>
1105
1106         <tr>
1107               <td class="header" colspan="2">Show the stack backtrace for the current thread.</td>
1108         </tr>
1109         <tr>
1110               <td class="content">
1111                  <b>(gdb)</b> bt
1112                  <br>
1113               </td>
1114               <td class="content">
1115                  <b>(lldb)</b> thread backtrace
1116                  <br>
1117                  <b>(lldb)</b> bt
1118                  <br>
1119               </td>
1120         </tr>
1121
1122         <tr>
1123               <td class="header" colspan="2">Show the stack backtraces for all threads.</td>
1124         </tr>
1125         <tr>
1126               <td class="content">
1127                  <b>(gdb)</b> thread apply all bt
1128               </td>
1129               <td class="content">
1130                  <b>(lldb)</b> thread backtrace all
1131                  <br>
1132                  <b>(lldb)</b> bt all
1133               </td>
1134         </tr>
1135
1136         <tr>
1137               <td class="header" colspan="2">Backtrace the first five frames of the current thread.</td>
1138         </tr>
1139         <tr>
1140               <td class="content">
1141                  <b>(gdb)</b> bt 5
1142               </td>
1143               <td class="content">
1144                  <b>(lldb)</b> thread backtrace -c 5
1145                  <br>
1146                  <b>(lldb)</b> bt 5 (<i>lldb-169 and later</i>)
1147                  <br>
1148                  <b>(lldb)</b> bt -c 5 (<i>lldb-168 and earlier</i>)
1149               </td>
1150         </tr>
1151
1152         <tr>
1153               <td class="header" colspan="2">Select a different stack frame by index for the current thread.</td>
1154         </tr>
1155         <tr>
1156               <td class="content">
1157                  <b>(gdb)</b> frame 12
1158               </td>
1159               <td class="content">
1160                  <b>(lldb)</b> frame select 12
1161                  <br>
1162                  <b>(lldb)</b> fr s 12
1163                  <br>
1164                  <b>(lldb)</b> f 12
1165                  <br>
1166               </td>
1167         </tr>
1168
1169         <tr>
1170               <td class="header" colspan="2">List information about the currently selected frame in the current thread.</td>
1171         </tr>
1172         <tr>
1173               <td class="content">
1174               </td>
1175               <td class="content">
1176                  <b>(lldb)</b> frame info
1177                  <br>
1178               </td>
1179         </tr>
1180
1181         <tr>
1182               <td class="header" colspan="2">Select the stack frame that called the current stack frame.</td>
1183         </tr>
1184         <tr>
1185               <td class="content">
1186                  <b>(gdb)</b> up
1187               </td>
1188               <td class="content">
1189                  <b>(lldb)</b> up
1190                  <br>
1191                  <b>(lldb)</b> frame select --relative=1
1192                  <br>
1193               </td>
1194         </tr>
1195
1196         <tr>
1197               <td class="header" colspan="2">Select the stack frame that is called by the current stack frame.</td>
1198         </tr>
1199         <tr>
1200               <td class="content">
1201                  <b>(gdb)</b> down
1202               </td>
1203               <td class="content">
1204                  <b>(lldb)</b> down
1205                  <br>
1206                  <b>(lldb)</b> frame select --relative=-1
1207                  <br>
1208                  <b>(lldb)</b> fr s -r-1
1209                  <br>
1210               </td>
1211         </tr>
1212
1213         <tr>
1214               <td class="header" colspan="2">Select a different stack frame using a relative offset.</td>
1215         </tr>
1216         <tr>
1217               <td class="content">
1218                  <b>(gdb)</b> up 2
1219                  <br>
1220                  <b>(gdb)</b> down 3
1221                  <br>
1222               </td>
1223               <td class="content">
1224                  <b>(lldb)</b> frame select --relative 2
1225                  <br>
1226                  <b>(lldb)</b> fr s -r2
1227                  <br>
1228                  <br>
1229                  <b>(lldb)</b> frame select --relative -3
1230                  <br>
1231                  <b>(lldb)</b> fr s -r-3
1232                  <br>
1233               </td>
1234         </tr>
1235
1236         <tr>
1237               <td class="header" colspan="2">Show the general purpose registers for the current thread.</td>
1238         </tr>
1239         <tr>
1240               <td class="content">
1241                  <b>(gdb)</b> info registers
1242                  <br>
1243               </td>
1244               <td class="content">
1245                  <b>(lldb)</b> register read
1246                  <br>
1247               </td>
1248         </tr>
1249
1250         <tr>
1251               <td class="header" colspan="2">Write a new decimal value '123' to the current thread register 'rax'.</td>
1252         </tr>
1253         <tr>
1254               <td class="content">
1255                  <b>(gdb)</b> p $rax = 123
1256                  <br>
1257               </td>
1258               <td class="content">
1259                  <b>(lldb)</b> register write rax 123
1260                  <br>
1261               </td>
1262         </tr>
1263
1264         <tr>
1265               <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>
1266         </tr>
1267         <tr>
1268               <td class="content">
1269                  <b>(gdb)</b> jump *$pc+8
1270                  <br>
1271               </td>
1272               <td class="content">
1273                  <b>(lldb)</b> register write pc `$pc+8`
1274                  <br>
1275               </td>
1276         </tr>
1277
1278         <tr>
1279               <td class="header" colspan="2">Show the general purpose registers for the current thread formatted as <b>signed decimal</b>. LLDB tries to use the same format characters as <b>printf(3)</b> when possible. Type "help format" to see the full list of format specifiers.</td>
1280         </tr>
1281         <tr>
1282               <td class="content">
1283               </td>
1284               <td class="content">
1285                  <b>(lldb)</b> register read --format i
1286                  <br>
1287                  <b>(lldb)</b> re r -f i
1288                  <br>
1289                  <br>
1290                  <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i>
1291                  <br>
1292                  <b>(lldb)</b> register read/d
1293                  <br>
1294               </td>
1295         </tr>
1296
1297         <tr>
1298               <td class="header" colspan="2">Show all registers in all register sets for the current thread.</td>
1299         </tr>
1300         <tr>
1301               <td class="content">
1302                  <b>(gdb)</b> info all-registers
1303                  <br>
1304               </td>
1305               <td class="content">
1306                  <b>(lldb)</b> register read --all
1307                  <br>
1308                  <b>(lldb)</b> re r -a
1309                  <br>
1310               </td>
1311         </tr>
1312
1313         <tr>
1314               <td class="header" colspan="2">Show the values for the registers named "rax", "rsp" and "rbp" in the current thread.</td>
1315         </tr>
1316         <tr>
1317               <td class="content">
1318                  <b>(gdb)</b> info all-registers rax rsp rbp
1319                  <br>
1320               </td>
1321               <td class="content">
1322                  <b>(lldb)</b> register read rax rsp rbp
1323                  <br>
1324               </td>
1325         </tr>
1326
1327         <tr>
1328               <td class="header" colspan="2">Show the values for the register named "rax" in the current thread formatted as <b>binary</b>.</td>
1329         </tr>
1330         <tr>
1331               <td class="content">
1332                  <b>(gdb)</b> p/t $rax
1333                  <br>
1334               </td>
1335               <td class="content">
1336                  <b>(lldb)</b> register read --format binary rax
1337                  <br>
1338                  <b>(lldb)</b> re r -f b rax
1339                  <br>
1340                  <br>
1341                  <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i>
1342                  <br>
1343                  <b>(lldb)</b> register read/t rax
1344                  <br>
1345                  <b>(lldb)</b> p/t $rax
1346                  <br>
1347               </td>
1348         </tr>
1349
1350         <tr>
1351               <td class="header" colspan="2">Read memory from address 0xbffff3c0 and show 4 hex uint32_t values.</td>
1352         </tr>
1353         <tr>
1354               <td class="content">
1355                  <b>(gdb)</b> x/4xw 0xbffff3c0
1356                  <br>
1357               </td>
1358               <td class="content">
1359                  <b>(lldb)</b> memory read --size 4 --format x --count 4 0xbffff3c0
1360                  <br>
1361                  <b>(lldb)</b> me r -s4 -fx -c4 0xbffff3c0
1362                  <br>
1363                  <b>(lldb)</b> x -s4 -fx -c4 0xbffff3c0
1364                  <br>
1365                  <br>
1366                  <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i>
1367                  <br>
1368                  <b>(lldb)</b> memory read/4xw 0xbffff3c0
1369                  <br>
1370                  <b>(lldb)</b> x/4xw 0xbffff3c0
1371                  <br>
1372                  <b>(lldb)</b> memory read --gdb-format 4xw 0xbffff3c0
1373                  <br>
1374               </td>
1375         </tr>
1376
1377         <tr>
1378               <td class="header" colspan="2">Read memory starting at the expression "argv[0]".</td>
1379         </tr>
1380         <tr>
1381               <td class="content">
1382                  <b>(gdb)</b> x argv[0]
1383                  <br>
1384               </td>
1385               <td class="content">
1386                  <b>(lldb)</b> memory read `argv[0]`
1387                  <br>
1388                  <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>
1389                  <br>
1390                  <b>(lldb)</b> memory read --size `sizeof(int)` `argv[0]`
1391                  <br>
1392               </td>
1393         </tr>
1394
1395         <tr>
1396               <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>
1397         </tr>
1398         <tr>
1399               <td class="content">
1400                  <b>(gdb)</b> set logging on
1401                  <br>
1402                  <b>(gdb)</b> set logging file /tmp/mem.txt
1403                  <br>
1404                  <b>(gdb)</b> x/512bx 0xbffff3c0
1405                  <br>
1406                  <b>(gdb)</b> set logging off
1407                  <br>
1408               </td>
1409               <td class="content">
1410                  <b>(lldb)</b> memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0
1411                  <br>
1412                  <b>(lldb)</b> me r -o/tmp/mem.txt -c512 0xbffff3c0
1413                  <br>
1414                  <b>(lldb)</b> x/512bx -o/tmp/mem.txt 0xbffff3c0
1415                  <br>
1416               </td>
1417         </tr>
1418
1419         <tr>
1420               <td class="header" colspan="2">Save binary memory data starting at 0x1000 and ending at 0x2000 to a file.</td>
1421         </tr>
1422         <tr>
1423               <td class="content">
1424                  <b>(gdb)</b> dump memory /tmp/mem.bin 0x1000 0x2000
1425               </td>
1426               <td class="content">
1427                  <b>(lldb)</b> memory read --outfile /tmp/mem.bin --binary 0x1000 0x2000
1428                  <br>
1429                  <b>(lldb)</b> me r -o /tmp/mem.bin -b 0x1000 0x2000
1430                  <br>
1431               </td>
1432         </tr>
1433         <tr>
1434               <td class="header" colspan="2">Get information about a specific heap allocation (available on macOS only).</td>
1435         </tr>
1436         <tr>
1437               <td class="content">
1438                  <b>(gdb)</b> info malloc 0x10010d680
1439               </td>
1440               <td class="content">
1441                  <b>(lldb)</b> command script import lldb.macosx.heap
1442                  <br>
1443                  <b>(lldb)</b> process launch --environment MallocStackLogging=1 -- [ARGS]
1444                  <br>
1445                  <b>(lldb)</b> malloc_info --stack-history 0x10010d680
1446                  <br>
1447               </td>
1448         </tr>
1449         <tr>
1450               <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 macOS only)</td>
1451         </tr>
1452         <tr>
1453               <td class="content">
1454               </td>
1455               <td class="content">
1456                  <b>(lldb)</b> command script import lldb.macosx.heap
1457                  <br>
1458                  <b>(lldb)</b> malloc_info --type 0x10010d680
1459                  <br>
1460               </td>
1461         </tr>
1462         <tr>
1463               <td class="header" colspan="2">Find all heap blocks that contain a pointer specified by an expression EXPR (available on macOS only).</td>
1464         </tr>
1465         <tr>
1466               <td class="content">
1467               </td>
1468               <td class="content">
1469                  <b>(lldb)</b> command script import lldb.macosx.heap
1470                  <br>
1471                  <b>(lldb)</b> ptr_refs EXPR
1472                  <br>
1473               </td>
1474         </tr>
1475         <tr>
1476               <td class="header" colspan="2">Find all heap blocks that contain a C string anywhere in the block (available on macOS only).</td>
1477         </tr>
1478         <tr>
1479               <td class="content">
1480               </td>
1481               <td class="content">
1482                  <b>(lldb)</b> command script import lldb.macosx.heap
1483                  <br>
1484                  <b>(lldb)</b> cstr_refs CSTRING
1485                  <br>
1486               </td>
1487         </tr>
1488         <tr>
1489               <td class="header" colspan="2">Disassemble the current function for the current frame.</td>
1490         </tr>
1491         <tr>
1492               <td class="content">
1493                  <b>(gdb)</b> disassemble
1494               </td>
1495               <td class="content">
1496                  <b>(lldb)</b> disassemble --frame
1497                  <br>
1498                  <b>(lldb)</b> di -f
1499               </td>
1500         </tr>
1501
1502         <tr>
1503               <td class="header" colspan="2">Disassemble any functions named <b>main</b>.</td>
1504         </tr>
1505         <tr>
1506               <td class="content">
1507                  <b>(gdb)</b> disassemble main
1508               </td>
1509               <td class="content">
1510                  <b>(lldb)</b> disassemble --name main
1511                  <br>
1512                  <b>(lldb)</b> di -n main
1513               </td>
1514         </tr>
1515
1516         <tr>
1517               <td class="header" colspan="2">Disassemble an address range.</td>
1518         </tr>
1519         <tr>
1520               <td class="content">
1521                  <b>(gdb)</b> disassemble 0x1eb8 0x1ec3
1522               </td>
1523               <td class="content">
1524                  <b>(lldb)</b> disassemble --start-address 0x1eb8 --end-address 0x1ec3
1525                  <br>
1526                  <b>(lldb)</b> di -s 0x1eb8 -e 0x1ec3
1527                  <br>
1528               </td>
1529         </tr>
1530
1531         <tr>
1532               <td class="header" colspan="2">Disassemble 20 instructions from a given address.</td>
1533         </tr>
1534         <tr>
1535               <td class="content">
1536                  <b>(gdb)</b> x/20i 0x1eb8
1537               </td>
1538               <td class="content">
1539                  <b>(lldb)</b> disassemble --start-address 0x1eb8 --count 20
1540                  <br>
1541                  <b>(lldb)</b> di -s 0x1eb8 -c 20
1542                  <br>
1543               </td>
1544         </tr>
1545
1546         <tr>
1547               <td class="header" colspan="2">Show mixed source and disassembly for the current function for the current frame.</td>
1548         </tr>
1549         <tr>
1550               <td class="content">
1551                  n/a
1552               </td>
1553               <td class="content">
1554                  <b>(lldb)</b> disassemble --frame --mixed
1555                  <br>
1556                  <b>(lldb)</b> di -f -m
1557               </td>
1558         </tr>
1559
1560         <tr>
1561               <td class="header" colspan="2">Disassemble the current function for the current frame and show the opcode bytes.</td>
1562         </tr>
1563         <tr>
1564               <td class="content">
1565                  n/a
1566               </td>
1567               <td class="content">
1568                  <b>(lldb)</b> disassemble --frame --bytes
1569                  <br>
1570                  <b>(lldb)</b> di -f -b
1571               </td>
1572         </tr>
1573
1574         <tr>
1575               <td class="header" colspan="2">Disassemble the current source line for the current frame.</td>
1576         </tr>
1577         <tr>
1578               <td class="content">
1579                  n/a
1580               </td>
1581               <td class="content">
1582                  <b>(lldb)</b> disassemble --line
1583                  <br>
1584                  <b>(lldb)</b> di -l
1585               </td>
1586         </tr>
1587
1588      </tbody>
1589   </table>
1590
1591Executable and Shared Library Query Commands
1592--------------------------------------------
1593
1594.. raw:: html
1595
1596   <table class="mapping" cellspacing="0">
1597      <tbody>
1598         <tr>
1599               <td class="hed" width="50%">GDB</td>
1600               <td class="hed" width="50%">LLDB</td>
1601         </tr>
1602
1603         <tr>
1604               <td class="header" colspan="2">List the main executable and all dependent shared libraries.</td>
1605         </tr>
1606         <tr>
1607               <td class="content">
1608                  <b>(gdb)</b> info shared
1609                  <br>
1610               </td>
1611               <td class="content">
1612                  <b>(lldb)</b> image list
1613                  <br>
1614               </td>
1615         </tr>
1616
1617         <tr>
1618               <td class="header" colspan="2">Look up information for a raw address in the executable or any shared libraries.</td>
1619         </tr>
1620         <tr>
1621               <td class="content">
1622                  <b>(gdb)</b> info symbol 0x1ec4
1623                  <br>
1624               </td>
1625               <td class="content">
1626                  <b>(lldb)</b> image lookup --address 0x1ec4
1627                  <br>
1628                  <b>(lldb)</b> im loo -a 0x1ec4
1629                  <br>
1630               </td>
1631         </tr>
1632
1633         <tr>
1634               <td class="header" colspan="2">Look up functions matching a regular expression in a binary.</td>
1635         </tr>
1636         <tr>
1637               <td class="content">
1638                  <b>(gdb)</b> info function &lt;FUNC_REGEX&gt;
1639                  <br>
1640               </td>
1641               <td class="content">
1642                  This one finds debug symbols:
1643                  <br>
1644                  <b>(lldb)</b> image lookup -r -n &lt;FUNC_REGEX&gt;
1645                  <br>
1646                  <br> This one finds non-debug symbols:
1647                  <br>
1648                  <b>(lldb)</b> image lookup -r -s &lt;FUNC_REGEX&gt;
1649                  <br>
1650                  <br> Provide a list of binaries as arguments to limit the search.
1651               </td>
1652         </tr>
1653
1654         <tr>
1655               <td class="header" colspan="2">Find full source line information.</td>
1656         </tr>
1657         <tr>
1658               <td class="content">
1659                  <b>(gdb)</b> info line 0x1ec4
1660                  <br>
1661               </td>
1662               <td class="content">
1663                  This one is a bit messy at present. Do:
1664                  <br>
1665                  <br>
1666                  <b>(lldb)</b> image lookup -v --address 0x1ec4
1667                  <br>
1668                  <br> and look for the LineEntry line, which will have the full source path and line range information.
1669                  <br>
1670               </td>
1671         </tr>
1672
1673         <tr>
1674               <td class="header" colspan="2">Look up information for an address in <b>a.out</b> only.</td>
1675         </tr>
1676         <tr>
1677               <td class="content">
1678               </td>
1679               <td class="content">
1680                  <b>(lldb)</b> image lookup --address 0x1ec4 a.out
1681                  <br>
1682                  <b>(lldb)</b> im loo -a 0x1ec4 a.out
1683                  <br>
1684               </td>
1685         </tr>
1686
1687         <tr>
1688               <td class="header" colspan="2">Look up information for for a type <code>Point</code> by name.</td>
1689         </tr>
1690         <tr>
1691               <td class="content">
1692                  <b>(gdb)</b> ptype Point
1693                  <br>
1694               </td>
1695               <td class="content">
1696                  <b>(lldb)</b> image lookup --type Point
1697                  <br>
1698                  <b>(lldb)</b> im loo -t Point
1699                  <br>
1700               </td>
1701         </tr>
1702
1703         <tr>
1704               <td class="header" colspan="2">Dump all sections from the main executable and any shared libraries.</td>
1705         </tr>
1706         <tr>
1707               <td class="content">
1708                  <b>(gdb)</b> maintenance info sections
1709                  <br>
1710               </td>
1711               <td class="content">
1712                  <b>(lldb)</b> image dump sections
1713                  <br>
1714               </td>
1715         </tr>
1716
1717         <tr>
1718               <td class="header" colspan="2">Dump all sections in the <b>a.out</b> module.</td>
1719         </tr>
1720         <tr>
1721               <td class="content">
1722               </td>
1723               <td class="content">
1724                  <b>(lldb)</b> image dump sections a.out
1725                  <br>
1726               </td>
1727         </tr>
1728
1729         <tr>
1730               <td class="header" colspan="2">Dump all symbols from the main executable and any shared libraries.</td>
1731         </tr>
1732         <tr>
1733               <td class="content">
1734               </td>
1735               <td class="content">
1736                  <b>(lldb)</b> image dump symtab
1737                  <br>
1738               </td>
1739         </tr>
1740
1741         <tr>
1742               <td class="header" colspan="2">Dump all symbols in <b>a.out</b> and <b>liba.so</b>.</td>
1743         </tr>
1744         <tr>
1745               <td class="content">
1746               </td>
1747               <td class="content">
1748                  <b>(lldb)</b> image dump symtab a.out liba.so
1749                  <br>
1750               </td>
1751         </tr>
1752
1753      </tbody>
1754   </table>
1755
1756Miscellaneous
1757-------------
1758
1759.. raw:: html
1760
1761   <table class="mapping" cellspacing="0">
1762      <tbody>
1763         <tr>
1764               <td class="hed" width="50%">GDB</td>
1765               <td class="hed" width="50%">LLDB</td>
1766         </tr>
1767
1768         <tr>
1769               <td class="header" colspan="2">Search command help for a keyword.</td>
1770         </tr>
1771         <tr>
1772               <td class="content">
1773                  <b>(gdb)</b> apropos keyword
1774                  <br>
1775               </td>
1776               <td class="content">
1777                  <b>(lldb)</b> apropos keyword
1778                  <br>
1779               </td>
1780         </tr>
1781
1782         <tr>
1783               <td class="header" colspan="2">Echo text to the screen.</td>
1784         </tr>
1785         <tr>
1786               <td class="content">
1787                  <b>(gdb)</b> echo Here is some text\n
1788                  <br>
1789               </td>
1790               <td class="content">
1791                  <b>(lldb)</b> script print "Here is some text"
1792                  <br>
1793               </td>
1794         </tr>
1795
1796         <tr>
1797               <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>
1798         </tr>
1799         <tr>
1800               <td class="content">
1801                  <b>(gdb)</b> set pathname-substitutions /buildbot/path /my/path
1802                  <br>
1803               </td>
1804               <td class="content">
1805                  <b>(lldb)</b> settings set target.source-map /buildbot/path /my/path
1806                  <br>
1807               </td>
1808         </tr>
1809
1810         <tr>
1811               <td class="header" colspan="2">Supply a catchall directory to search for source files in.</td>
1812         </tr>
1813         <tr>
1814               <td class="content">
1815                  <b>(gdb)</b> directory /my/path
1816                  <br>
1817               </td>
1818               <td class="content">
1819                  (<i>No equivalent command - use the source-map instead.</i>)
1820                  <br>
1821               </td>
1822         </tr>
1823
1824      </tbody>
1825   </table>
1826