]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - www/lldb-gdb.html
Vendor import of lldb trunk r256945:
[FreeBSD/FreeBSD.git] / www / lldb-gdb.html
1 <!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" />
6 <title>LLDB to GDB Command Map</title>
7 </head>
8
9 <body>
10     <div class="www_title">
11       The <strong>LLDB</strong> Debugger
12     </div>
13
14 <div id="container">
15     <div id="content">
16          <!--#include virtual="sidebar.incl"-->
17         <div id="middle">
18             <div class="post">
19
20                 <h1 class ="postheader">GDB to LLDB Command Map</h1>
21                 <div class="post">
22
23                     <p>Below is a table of GDB commands with the LLDB counterparts.
24                         The built in GDB-compatibility aliases in LLDB are also
25                         listed.  The full lldb command names are often long, but any
26                         unique short form can be used.  Instead of "<b>breakpoint set</b>",
27                         "<b>br se</b>" is also acceptable.</p>
28                 </div>
29                 <div class="postfooter"></div>
30
31                 <h1 class ="postheader">Execution Commands</h1>
32                 <div class="post">
33
34                     <p>
35
36                     <table class="stats" width="620" cellspacing="0">
37                     <tr>
38                         <td class="hed" width="50%">GDB</td>
39                         <td class="hed" width="50%">LLDB</td>
40                     </tr>
41
42                     <tr><td class="header" colspan="2">Launch a process no arguments.</td></tr>
43                         <td class="content">
44                             <b>(gdb)</b> run<br>
45                             <b>(gdb)</b> r
46                         </td>
47                         <td class="content">
48                             <b>(lldb)</b> process launch<br>
49                             <b>(lldb)</b> run<br>
50                             <b>(lldb)</b> r
51                         </td>
52                     </tr>
53
54
55                     <tr><td class="header" colspan="2">Launch a process with arguments <code>&lt;args&gt;</code>.</td></tr>
56                         <td class="content">
57                             <b>(gdb)</b> run &lt;args&gt;<br>
58                             <b>(gdb)</b> r &lt;args&gt;
59                         </td>
60                         <td class="content">
61                             <b>(lldb)</b> process launch -- &lt;args&gt;<br>
62                             <b>(lldb)</b> r &lt;args&gt;
63                         </td>
64                     </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">
68                             <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>
74                         <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>
81                     </tr>
82
83                     <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
100                     <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">
102                         </td>
103                         <td class="content">
104                             <b>(lldb)</b> process launch --tty -- &lt;args&gt;<br>
105                             <b>(lldb)</b> pro la -t -- &lt;args&gt;<br>
106                         </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">
111                         </td>
112                         <td class="content">
113                             <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>
115                         </td>
116                     </tr>
117
118                     <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>
125                             <b>(lldb)</b> env DEBUG=1<br>
126                         </td>
127                     </tr>
128
129                     <tr><td class="header" colspan="2">Unset environment variables for process before launching.</td></tr>
130                         <td class="content">
131                             <b>(gdb)</b> unset env DEBUG<br>
132                         </td>
133                         <td class="content">
134                             <b>(lldb)</b> settings remove target.env-vars DEBUG<br>
135                             <b>(lldb)</b> set rem target.env-vars DEBUG<br>
136                         </td>
137                     </tr>
138
139                     <tr><td class="header" colspan="2">Show the arguments that will be or were passed to the program when run.</td></tr>
140                         <td class="content">
141                             <b>(gdb)</b> show args<br>
142                             Argument list to give program being debugged when it is started is &quot;1 2 3&quot.<br>
143                         </td>
144                         <td class="content">
145                             <b>(lldb)</b> settings show target.run-args<br>
146                             target.run-args (array of strings) =<br>
147                             [0]: &quot;1&quot;<br>
148                             [1]: &quot;2&quot;<br>
149                             [2]: &quot;3&quot;<br>
150                         </td>
151                     </tr>
152
153
154                     <tr><td class="header" colspan="2">Set environment variables for process and launch process in one command.</td></tr>
155                         <td class="content">
156                         </td>
157                         <td class="content">
158                             <b>(lldb)</b> process launch -v DEBUG=1<br>
159                         </td>
160                     </tr>
161
162                     <tr><td class="header" colspan="2">Attach to a process with process ID 123.</td></tr>
163                     <tr>
164                         <td class="content">
165                             <b>(gdb)</b> attach 123
166                         </td>
167                         <td class="content">
168                             <b>(lldb)</b> process attach --pid 123<br>
169                             <b>(lldb)</b> attach -p 123
170                         </td>
171                     </tr>
172
173                     <tr><td class="header" colspan="2">Attach to a process named "a.out".</td></tr>
174                     <tr>
175                         <td class="content">
176                             <b>(gdb)</b> attach a.out
177                         </td>
178                         <td class="content">
179                             <b>(lldb)</b> process attach --name a.out<br>
180                             <b>(lldb)</b> pro at -n a.out
181                         </td>
182                     </tr>
183
184                     <tr><td class="header" colspan="2">Wait for a process named "a.out" to launch and attach.</td></tr>
185                     <tr>
186                         <td class="content">
187                             <b>(gdb)</b> attach -waitfor a.out
188                         </td>
189                         <td class="content">
190                             <b>(lldb)</b> process attach --name a.out --waitfor<br>
191                             <b>(lldb)</b> pro at -n a.out -w
192                         </td>
193                     </tr>
194
195                     <tr><td class="header" colspan="2">Attach to a remote gdb protocol server running on system "eorgadd", port 8000.</td></tr>
196                     <tr>
197                         <td class="content">
198                             <b>(gdb)</b> target remote eorgadd:8000
199                         </td>
200                         <td class="content">
201                             <b>(lldb)</b> gdb-remote eorgadd:8000
202                         </td>
203                     </tr>
204
205                     <tr><td class="header" colspan="2">Attach to a remote gdb protocol server running on the local system, port 8000.</td></tr>
206                     <tr>
207                         <td class="content">
208                             <b>(gdb)</b> target remote localhost:8000
209                         </td>
210                         <td class="content">
211                             <b>(lldb)</b> gdb-remote 8000
212                         </td>
213                     </tr>
214
215                     <tr><td class="header" colspan="2">Attach to a Darwin kernel in kdp mode on system "eorgadd".</td></tr>
216                     <tr>
217                         <td class="content">
218                             <b>(gdb)</b> kdp-reattach eorgadd
219                         </td>
220                         <td class="content">
221                             <b>(lldb)</b> kdp-remote eorgadd
222                         </td>
223                     </tr>
224
225                     <tr><td class="header" colspan="2">Do a source level single step in the currently selected thread.</td></tr>
226                     <tr>
227                         <td class="content">
228                             <b>(gdb)</b> step<br>
229                             <b>(gdb)</b> s
230                         </td>
231                         <td class="content">
232                             <b>(lldb)</b> thread step-in<br>
233                             <b>(lldb)</b> step<br>
234                             <b>(lldb)</b> s
235                         </td>
236                     </tr>
237
238
239                     <tr><td class="header" colspan="2">Do a source level single step over in the currently selected thread.</td></tr>
240                     <tr>
241                         <td class="content">
242                             <b>(gdb)</b> next<br>
243                             <b>(gdb)</b> n
244                         </td>
245                         <td class="content">
246                             <b>(lldb)</b> thread step-over<br>
247                             <b>(lldb)</b> next<br>
248                             <b>(lldb)</b> n<br>
249                         </td>
250                     </tr>
251
252                     <tr><td class="header" colspan="2">Do an instruction level single step in the currently selected thread.</td></tr>
253                     <tr>
254                         <td class="content">
255                             <b>(gdb)</b> stepi<br>
256                             <b>(gdb)</b> si
257                         </td>
258                         <td class="content">
259                             <b>(lldb)</b> thread step-inst<br>
260                             <b>(lldb)</b> si<br>
261                         </td>
262                     </tr>
263
264                     <tr><td class="header" colspan="2">Do an instruction level single step over in the currently selected thread.</td></tr>
265                     <tr>
266                         <td class="content">
267                             <b>(gdb)</b> nexti<br>
268                             <b>(gdb)</b> ni
269                         </td>
270                         <td class="content">
271                             <b>(lldb)</b> thread step-inst-over<br>
272                             <b>(lldb)</b> ni
273                         </td>
274                     </tr>
275
276                     <tr><td class="header" colspan="2">Step out of the currently selected frame.</td></tr>
277                     <tr>
278                         <td class="content">
279                             <b>(gdb)</b> finish<br>
280                         </td>
281                         <td class="content">
282                             <b>(lldb)</b> thread step-out<br>
283                             <b>(lldb)</b> finish<br>
284                         </td>
285                     </tr>
286
287                     <tr><td class="header" colspan="2">Return immediately from the currently selected frame, with an optional return value.</td></tr>
288                     <tr>
289                         <td class="content">
290                             <b>(gdb)</b> return &lt;RETURN EXPRESSION&gt;<br>
291                         </td>
292                         <td class="content">
293                             <b>(lldb)</b> thread return &lt;RETURN EXPRESSION&gt;<br>
294                         </td>
295                     </tr>
296
297                     <tr><td class="header" colspan="2">Backtrace and disassemble every time you stop.</td></tr>
298                     <tr>
299                         <td class="content">
300                         </td>
301                         <td class="content">
302                             <b>(lldb)</b> target stop-hook add<br>
303                             Enter your stop hook command(s).  Type 'DONE' to end.<br>
304                             &gt; bt<br>
305                             &gt; disassemble --pc<br>
306                             &gt; DONE<br>
307                             Stop hook #1 added.<br>
308                         </td>
309                     </tr>
310
311                     </table>
312                     <p>
313                 </div>
314                 <div class="postfooter"></div>
315
316                 <h1 class ="postheader">Breakpoint Commands</h1>
317                 <div class="post">
318
319                     <p>
320
321                     <table class="stats" width="620" cellspacing="0">
322                     <tr>
323                         <td class="hed" width="50%">GDB</td>
324                         <td class="hed" width="50%">LLDB</td>
325                     </tr>
326
327                     <tr><td class="header" colspan="2">Set a breakpoint at all functions named <b>main</b>.</td></tr>
328                     <tr>
329                         <td class="content">
330                             <b>(gdb)</b> break main
331                         </td>
332                         <td class="content">
333                             <b>(lldb)</b> breakpoint set --name main<br>
334                             <b>(lldb)</b> br s -n main<br>
335                             <b>(lldb)</b> b main
336                         </td>
337                     </tr>
338
339                     <tr><td class="header" colspan="2">Set a breakpoint in file <b>test.c</b> at line <b>12</b>.</td></tr>
340                     <tr>
341                         <td class="content">
342                             <b>(gdb)</b> break test.c:12
343                         </td>
344                         <td class="content">
345                             <b>(lldb)</b> breakpoint set --file test.c --line 12<br>
346                             <b>(lldb)</b> br s -f test.c -l 12<br>
347                             <b>(lldb)</b> b test.c:12
348                         </td>
349                     </tr>
350
351                     <tr><td class="header" colspan="2">Set a breakpoint at all C++ methods whose basename is <b>main</b>.</td></tr>
352                     <tr>
353                         <td class="content">
354                             <b>(gdb)</b> break main<br>
355                             <i>(Hope that there are no C functions named <b>main</b>)</i>.
356                         </td>
357                         <td class="content">
358                             <b>(lldb)</b> breakpoint set --method main<br>
359                             <b>(lldb)</b> br s -M main<br>
360                         </td>
361                     </tr>
362
363                     <tr><td class="header" colspan="2">Set a breakpoint at and object C function: <b>-[NSString stringWithFormat:]</b>.</td></tr>
364                     <tr>
365                         <td class="content">
366                             <b>(gdb)</b> break -[NSString stringWithFormat:]<br>
367                         </td>
368                         <td class="content">
369                             <b>(lldb)</b> breakpoint set --name "-[NSString stringWithFormat:]"<br>
370                             <b>(lldb)</b> b -[NSString stringWithFormat:]<br>
371                         </td>
372                     </tr>
373
374                     <tr><td class="header" colspan="2">Set a breakpoint at all Objective C methods whose selector is <b>count</b>.</td></tr>
375                     <tr>
376                         <td class="content">
377                             <b>(gdb)</b> break count<br>
378                             <i>(Hope that there are no C or C++ functions named <b>count</b>)</i>.
379                         </td>
380                         <td class="content">
381                             <b>(lldb)</b> breakpoint set --selector count<br>
382                             <b>(lldb)</b> br s -S count<br>
383                         </td>
384                     </tr>
385                     <tr><td class="header" colspan="2">Set a breakpoint by regular expression on function name.</td></tr>
386
387                     <tr>
388                         <td class="content">
389                             <b>(gdb)</b> rbreak regular-expression<br>
390                         </td>
391                         <td class="content">
392                             <b>(lldb)</b> breakpoint set --func-regex regular-expression<br>
393                             <b>(lldb)</b> br s -r regular-expression<br>
394                         </td>
395                     </tr>
396
397                     <tr><td class="header" colspan="2">Ensure that breakpoints by file and line work for #included .c/.cpp/.m files.</td></tr>
398
399                     <tr>
400                         <td class="content">
401                             <b>(gdb)</b> b foo.c:12<br>
402                         </td>
403                         <td class="content">
404                             <b>(lldb)</b> settings set target.inline-breakpoint-strategy always<br>
405                             <b>(lldb)</b> br s -f foo.c -l 12<br>
406                         </td>
407                     </tr>
408
409                     <tr><td class="header" colspan="2">Set a breakpoint by regular expression on source file contents.</td></tr>
410
411                     <tr>
412                         <td class="content">
413                             <b>(gdb)</b> shell grep -e -n pattern source-file<br>
414                             <b>(gdb)</b> break source-file:CopyLineNumbers<br>
415                         </td>
416                         <td class="content">
417                             <b>(lldb)</b> breakpoint set --source-pattern regular-expression --file SourceFile<br>
418                             <b>(lldb)</b> br s -p regular-expression -f file<br>
419                         </td>
420                     </tr>
421
422                     <tr><td class="header" colspan="2">Set a conditional breakpoint</td></tr>
423
424                     <tr>
425                         <td class="content">
426                             <b>(gdb)</b> break foo if strcmp(y,&quot;hello&quot;) == 0<br>
427                         </td>
428                         <td class="content">
429                             <b>(lldb)</b> breakpoint set --name foo --condition '(int)strcmp(y,&quot;hello&quot;) == 0'<br>
430                             <b>(lldb)</b> br s -n foo -c '(int)strcmp(y,&quot;hello&quot;) == 0'<br>
431                         </td>
432                     </tr>
433
434                     <tr><td class="header" colspan="2">List all breakpoints.</td></tr>
435                     <tr>
436                         <td class="content">
437                             <b>(gdb)</b> info break<br>
438                         </td>
439                         <td class="content">
440                             <b>(lldb)</b> breakpoint list<br>
441                             <b>(lldb)</b> br l<br>
442                         </td>
443                     </tr>
444
445                     <tr><td class="header" colspan="2">Delete a breakpoint.</td></tr>
446                     <tr>
447                         <td class="content">
448                             <b>(gdb)</b> delete 1<br>
449                         </td>
450                         <td class="content">
451                             <b>(lldb)</b> breakpoint delete 1<br>
452                             <b>(lldb)</b> br del 1<br>
453                         </td>
454                     </tr>
455
456                     </table>
457                     <p>
458                 </div>
459                 <div class="postfooter"></div>
460
461                 <h1 class ="postheader">Watchpoint Commands</h1>
462                 <div class="post">
463
464                     <p>
465
466                     <table class="stats" width="620" cellspacing="0">
467                     <tr>
468                         <td class="hed" width="50%">GDB</td>
469                         <td class="hed" width="50%">LLDB</td>
470                     </tr>
471
472                     <tr><td class="header" colspan="2">Set a watchpoint on a variable when it is written to.</td></tr>
473                     <tr>
474                         <td class="content">
475                             <b>(gdb)</b> watch global_var
476                         </td>
477                         <td class="content">
478                             <b>(lldb)</b> watchpoint set variable global_var<br>
479                             <b>(lldb)</b> wa s v global_var<br>
480                         </td>
481                     </tr>
482
483                     <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.
484                         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>
485                     <tr>
486                         <td class="content">
487                             <b>(gdb)</b> watch -location g_char_ptr
488                         </td>
489                         <td class="content">
490                             <b>(lldb)</b> watchpoint set expression -- my_ptr<br>
491                             <b>(lldb)</b> wa s e -- my_ptr<br>
492                       </td>
493                     </tr>
494
495                     <tr><td class="header" colspan="2">Set a condition on a watchpoint</b>.</td></tr>
496                     <tr>
497                         <td class="content">
498                         </td>
499                         <td class="content">
500                             <b>(lldb)</b> watch set var global<br>
501                             <b>(lldb)</b> watchpoint modify -c '(global==5)'<br>
502                             <b>(lldb)</b> c<br>
503                             ...<br>
504                             <b>(lldb)</b> bt<br>
505                             * thread #1: tid = 0x1c03, 0x0000000100000ef5 a.out`modify + 21 at main.cpp:16, stop reason = watchpoint 1<br>
506                               frame #0: 0x0000000100000ef5 a.out`modify + 21 at main.cpp:16<br>
507                               frame #1: 0x0000000100000eac a.out`main + 108 at main.cpp:25<br>
508                               frame #2: 0x00007fff8ac9c7e1 libdyld.dylib`start + 1<br>
509                             <b>(lldb)</b> frame var global<br>
510                             (int32_t) global = 5<br>
511                         </td>
512                    </tr>
513
514                    <tr><td class="header" colspan="2">List all watchpoints.</td></tr>
515                     <tr>
516                         <td class="content">
517                             <b>(gdb)</b> info break<br>
518                         </td>
519                         <td class="content">
520                             <b>(lldb)</b> watchpoint list<br>
521                             <b>(lldb)</b> watch l<br>
522                         </td>
523                     </tr>
524
525                     <tr><td class="header" colspan="2">Delete a watchpoint.</td></tr>
526                     <tr>
527                         <td class="content">
528                             <b>(gdb)</b> delete 1<br>
529                         </td>
530                         <td class="content">
531                             <b>(lldb)</b> watchpoint delete 1<br>
532                             <b>(lldb)</b> watch del 1<br>
533                         </td>
534                     </tr>
535
536                     </table>
537                     <p>
538                 </div>
539
540             <div class="postfooter"></div>
541             <h1 class ="postheader">Examining Variables</h1>
542                 <div class="post">
543                     <p>
544                     <table class="stats" width="620" cellspacing="0">
545                     <tr>
546                         <td class="hed" width="50%">GDB</td>
547                         <td class="hed" width="50%">LLDB</td>
548                     </tr>
549
550                     <tr><td class="header" colspan="2">Show the arguments and local variables for the current frame.</td></tr>
551                     <tr>
552                         <td class="content">
553                             <b>(gdb)</b> info args<br>
554                             and<br>
555                             <b>(gdb)</b> info locals<br>
556                         </td>
557                         <td class="content">
558                             <b>(lldb)</b> frame variable<br>
559                             <b>(lldb)</b> fr v<br>
560                         </td>
561                     </tr>
562
563                     <tr><td class="header" colspan="2">Show the local variables for the current frame.</td></tr>
564                     <tr>
565                         <td class="content">
566                             <b>(gdb)</b> info locals<br>
567                         </td>
568                         <td class="content">
569                             <b>(lldb)</b> frame variable --no-args<br>
570                             <b>(lldb)</b> fr v -a<br>
571                         </td>
572                     </tr>
573
574                     <tr><td class="header" colspan="2">Show the contents of local variable "bar".</td></tr>
575                     <tr>
576                         <td class="content">
577                             <b>(gdb)</b> p bar<br>
578                         </td>
579                         <td class="content">
580                             <b>(lldb)</b> frame variable bar <br>
581                             <b>(lldb)</b> fr v bar <br>
582                             <b>(lldb)</b> p bar <br>
583                         </td>
584                     </tr>
585
586                     <tr><td class="header" colspan="2">Show the contents of local variable "bar" formatted as hex.</td></tr>
587                     <tr>
588                         <td class="content">
589                             <b>(gdb)</b> p/x bar<br>
590                         </td>
591                         <td class="content">
592                             <b>(lldb)</b> frame variable --format x bar <br>
593                             <b>(lldb)</b> fr v -f x bar <br>
594                         </td>
595                     </tr>
596
597                     <tr><td class="header" colspan="2">Show the contents of global variable "baz".</td></tr>
598                     <tr>
599                         <td class="content">
600                             <b>(gdb)</b> p baz<br>
601                         </td>
602                         <td class="content">
603                             <b>(lldb)</b> target variable baz <br>
604                             <b>(lldb)</b> ta v baz <br>
605                         </td>
606                     </tr>
607
608                     <tr><td class="header" colspan="2">Show the global/static variables defined in the current source file.</td></tr>
609                     <tr>
610                         <td class="content">
611                             n/a<br>
612                         </td>
613                         <td class="content">
614                             <b>(lldb)</b> target variable <br>
615                             <b>(lldb)</b> ta v <br>
616                         </td>
617                     </tr>
618
619                     <tr><td class="header" colspan="2">Display the variables "argc" and "argv" every time you stop.</td></tr>
620                     <tr>
621                         <td class="content">
622                             <b>(gdb)</b> display argc<br>
623                             <b>(gdb)</b> display argv<br>
624                         </td>
625                         <td class="content">
626                             <b>(lldb)</b> target stop-hook add --one-liner "frame variable argc argv"<br>
627                             <b>(lldb)</b> ta st a -o "fr v argc argv"<br>
628                             <b>(lldb)</b> display argc<br>
629                             <b>(lldb)</b> display argv<br>
630                         </td>
631                     </tr>
632
633                     <tr><td class="header" colspan="2">Display the variables "argc" and "argv" only when you stop in the function named <b>main</b>.</td></tr>
634                     <tr>
635                         <td class="content">
636                         </td>
637                         <td class="content">
638                             <b>(lldb)</b> target stop-hook add --name main --one-liner "frame variable argc argv"<br>
639                             <b>(lldb)</b> ta st a -n main -o "fr v argc argv"<br>
640                         </td>
641                     </tr>
642
643                     <tr><td class="header" colspan="2">Display the variable "*this" only when you stop in c class named <b>MyClass</b>.</td></tr>
644                     <tr>
645                         <td class="content">
646                         </td>
647                         <td class="content">
648                             <b>(lldb)</b> target stop-hook add --classname MyClass --one-liner "frame variable *this"<br>
649                             <b>(lldb)</b> ta st a -c MyClass -o "fr v *this"<br>
650                         </td>
651                     </tr>
652
653                     </table>
654                     <p>
655                 </div>
656
657
658
659
660             <h1 class ="postheader">Evaluating expressions</h1>
661                 <div class="post">
662                     <p>
663                     <table class="stats" width="620" cellspacing="0">
664                     <tr>
665                         <td class="hed" width="50%">GDB</td>
666                         <td class="hed" width="50%">LLDB</td>
667                     </tr>
668
669                     <tr><td class="header" colspan="2">Evaluating a generalized expression in the current frame.</td></tr>
670                     <tr>
671                         <td class="content">
672                             <b>(gdb)</b> print (int) printf ("Print nine: %d.", 4 + 5)<br>
673                               or if you don't want to see void returns: <br>
674                             <b>(gdb)</b> call (int) printf ("Print nine: %d.", 4 + 5)<br>
675                         </td>
676                         <td class="content">
677                             <b>(lldb)</b> expr (int) printf ("Print nine: %d.", 4 + 5)<br>
678                               or using the print alias:<br>
679                             <b>(lldb)</b> print (int) printf ("Print nine: %d.", 4 + 5)<br>
680                         </td>
681                     </tr>
682
683                     <tr><td class="header" colspan="2">Creating and assigning a value to a convenience variable.</td></tr>
684                     <tr>
685                         <td class="content">
686                             <b>(gdb)</b> set $foo = 5<br>
687                             <b>(gdb)</b> set variable $foo = 5<br>
688                               or using the print command <br>
689                             <b>(gdb)</b> print $foo = 5<br>
690                               or using the call command <br>
691                             <b>(gdb)</b> call $foo = 5<br>
692                               and if you want to specify the type of the variable:
693                             <b>(gdb)</b> set $foo = (unsigned int) 5<br>
694
695                         </td>
696                         <td class="content">
697                           In lldb you evaluate a variable declaration expression as you would write it in C:<br>
698                             <b>(lldb)</b> expr unsigned int $foo = 5<br>
699                         </td>
700                     </tr>
701
702                     <tr><td class="header" colspan="2">Printing the ObjC "description" of an object.</td></tr>
703                     <tr>
704                         <td class="content">
705                             <b>(gdb)</b> po [SomeClass returnAnObject]<br>
706                         </td>
707                         <td class="content">
708                             <b>(lldb)</b> expr -o -- [SomeClass returnAnObject]<br>
709                               or using the po alias:<br>
710                             <b>(lldb)</b> po [SomeClass returnAnObject]<br>
711                         </td>
712                     </tr>
713
714                     <tr><td class="header" colspan="2">Print the dynamic type of the result of an expression.</td></tr>
715                     <tr>
716                         <td class="content">
717                             <b>(gdb)</b> set print object 1<br>
718                             <b>(gdb)</b> p someCPPObjectPtrOrReference<br>
719                               only works for C++ objects.<br>
720                         </td>
721                         <td class="content">
722                             <b>(lldb)</b> expr -d 1 -- [SomeClass returnAnObject]<br>
723                             <b>(lldb)</b> expr -d 1 -- someCPPObjectPtrOrReference<br>
724                               or set dynamic type printing to be the default:
725                             <b>(lldb)</b> settings set target.prefer-dynamic run-target<br>
726                         </td>
727                     </tr>
728
729                     <tr><td class="header" colspan="2">Calling a function so you can stop at a breakpoint in the function.</td></tr>
730                     <tr>
731                         <td class="content">
732                             <b>(gdb)</b> set unwindonsignal 0<br>
733                             <b>(gdb)</b> p function_with_a_breakpoint()<br>
734                         </td>
735                         <td class="content">
736                             <b>(lldb)</b> expr -i 0 -- function_with_a_breakpoint()<br>
737                         </td>
738                     </tr>
739
740                     <tr><td class="header" colspan="2">Calling a function that crashes, and stopping when the function crashes.</td></tr>
741                     <tr>
742                         <td class="content">
743                             <b>(gdb)</b> set unwindonsignal 0<br>
744                             <b>(gdb)</b> p function_which_crashes()<br>
745                         </td>
746                         <td class="content">
747                             <b>(lldb)</b> expr -u 0 -- function_which_crashes()<br>
748                         </td>
749                     </tr>
750
751
752                     </table>
753                     <p>
754                 </div>
755
756             <h1 class ="postheader">Examining Thread State</h1>
757                 <div class="post">
758                     <p>
759                     <table class="stats" width="620" cellspacing="0">
760                     <tr>
761                         <td class="hed" width="50%">GDB</td>
762                         <td class="hed" width="50%">LLDB</td>
763                     </tr>
764
765
766                     <tr><td class="header" colspan="2">Show the stack backtrace for the current thread.</td></tr>
767                     <tr>
768                         <td class="content">
769                             <b>(gdb)</b> bt<br>
770                         </td>
771                         <td class="content">
772                             <b>(lldb)</b> thread backtrace<br>
773                             <b>(lldb)</b> bt<br>
774                         </td>
775                     </tr>
776
777                     <tr><td class="header" colspan="2">Show the stack backtraces for all threads.</td></tr>
778                     <tr>
779                         <td class="content">
780                             <b>(gdb)</b> thread apply all bt
781                         </td>
782                         <td class="content">
783                             <b>(lldb)</b> thread backtrace all<br>
784                             <b>(lldb)</b> bt all
785                         </td>
786                     </tr>
787
788                     <tr><td class="header" colspan="2">Backtrace the first five frames of the current thread.</td></tr>
789                     <tr>
790                         <td class="content">
791                             <b>(gdb)</b> bt 5
792                         </td>
793                         <td class="content">
794                             <b>(lldb)</b> thread backtrace -c 5<br>
795                             <b>(lldb)</b> bt 5 (<i>lldb-169 and later</i>)<br>
796                             <b>(lldb)</b> bt -c 5 (<i>lldb-168 and earlier</i>)
797                         </td>
798                     </tr>
799
800                     <tr><td class="header" colspan="2">Select a different stack frame by index for the current thread.</td></tr>
801                     <tr>
802                         <td class="content">
803                             <b>(gdb)</b> frame 12
804                         </td>
805                         <td class="content">
806                             <b>(lldb)</b> frame select 12<br>
807                             <b>(lldb)</b> fr s 12<br>
808                             <b>(lldb)</b> f 12<br>
809                         </td>
810                     </tr>
811
812                     <tr><td class="header" colspan="2">List information about the currently selected frame in the current thread.</td></tr>
813                     <tr>
814                         <td class="content">
815                         </td>
816                         <td class="content">
817                             <b>(lldb)</b> frame info<br>
818                         </td>
819                    </tr>
820
821                     <tr><td class="header" colspan="2">Select the stack frame that called the current stack frame.</td></tr>
822                     <tr>
823                         <td class="content">
824                             <b>(gdb)</b> up
825                         </td>
826                         <td class="content">
827                             <b>(lldb)</b> up<br>
828                             <b>(lldb)</b> frame select --relative=1<br>
829                         </td>
830                     </tr>
831
832                     <tr><td class="header" colspan="2">Select the stack frame that is called by the current stack frame.</td></tr>
833                     <tr>
834                         <td class="content">
835                             <b>(gdb)</b> down
836                         </td>
837                         <td class="content">
838                             <b>(lldb)</b> down<br>
839                             <b>(lldb)</b> frame select --relative=-1<br>
840                             <b>(lldb)</b> fr s -r-1<br>
841                         </td>
842                     </tr>
843
844                     <tr><td class="header" colspan="2">Select a different stack frame using a relative offset.</td></tr>
845                     <tr>
846                         <td class="content">
847                             <b>(gdb)</b> up 2<br>
848                             <b>(gdb)</b> down 3<br>
849                         </td>
850                         <td class="content">
851                             <b>(lldb)</b> frame select --relative 2<br>
852                             <b>(lldb)</b> fr s -r2<br>
853                             <br>
854                             <b>(lldb)</b> frame select --relative -3<br>
855                             <b>(lldb)</b> fr s -r-3<br>
856                         </td>
857                     </tr>
858
859                     <tr><td class="header" colspan="2">Show the general purpose registers for the current thread.</td></tr>
860                     <tr>
861                         <td class="content">
862                             <b>(gdb)</b> info registers<br>
863                         </td>
864                         <td class="content">
865                             <b>(lldb)</b> register read<br>
866                         </td>
867                     </tr>
868
869                     <tr><td class="header" colspan="2">Write a new decimal value '123' to the current thread register 'rax'.</td></tr>
870                     <tr>
871                         <td class="content">
872                             <b>(gdb)</b> p $rax = 123<br>
873                         </td>
874                         <td class="content">
875                             <b>(lldb)</b> register write rax 123<br>
876                         </td>
877                     </tr>
878
879                     <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>
880                     <tr>
881                         <td class="content">
882                             <b>(gdb)</b> jump *$pc+8<br>
883                         </td>
884                         <td class="content">
885                             <b>(lldb)</b> register write pc `$pc+8`<br>
886                         </td>
887                     </tr>
888
889                     <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
890                          the same format characters as <b>printf(3)</b> when possible.  Type "help format" to see the full list of format specifiers.</td></tr>
891                     <tr>
892                         <td class="content">
893                         </td>
894                         <td class="content">
895                             <b>(lldb)</b> register read --format i<br>
896                             <b>(lldb)</b> re r -f i<br>
897                                                         <br>
898                                                         <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i><br>
899                             <b>(lldb)</b> register read/d<br>
900                         </td>
901                     </tr>
902
903                     <tr><td class="header" colspan="2">Show all registers in all register sets for the current thread.</td></tr>
904                     <tr>
905                         <td class="content">
906                             <b>(gdb)</b> info all-registers<br>
907                         </td>
908                         <td class="content">
909                             <b>(lldb)</b> register read --all<br>
910                             <b>(lldb)</b> re r -a<br>
911                         </td>
912                     </tr>
913
914                     <tr><td class="header" colspan="2">Show the values for the registers named "rax", "rsp" and "rbp" in the current thread.</td></tr>
915                     <tr>
916                         <td class="content">
917                             <b>(gdb)</b> info all-registers rax rsp rbp<br>
918                         </td>
919                         <td class="content">
920                             <b>(lldb)</b> register read rax rsp rbp<br>
921                         </td>
922                     </tr>
923
924                     <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>
925                     <tr>
926                         <td class="content">
927                             <b>(gdb)</b> p/t $rax<br>
928                         </td>
929                         <td class="content">
930                             <b>(lldb)</b> register read --format binary rax<br>
931                             <b>(lldb)</b> re r -f b rax<br>
932                                                         <br>
933                                                         <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i><br>
934                                                         <b>(lldb)</b> register read/t rax<br>
935                                                         <b>(lldb)</b> p/t $rax<br>
936                         </td>
937                     </tr>
938
939                     <tr><td class="header" colspan="2">Read memory from address 0xbffff3c0 and show 4 hex uint32_t values.</td></tr>
940                     <tr>
941                         <td class="content">
942                             <b>(gdb)</b> x/4xw 0xbffff3c0<br>
943                         </td>
944                         <td class="content">
945                             <b>(lldb)</b> memory read --size 4 --format x --count 4 0xbffff3c0<br>
946                             <b>(lldb)</b> me r -s4 -fx -c4 0xbffff3c0<br>
947                             <b>(lldb)</b> x -s4 -fx -c4 0xbffff3c0<br>
948                                                         <br>
949                                                         <i>LLDB now supports the GDB shorthand format syntax but there can't be space after the command:</i><br>
950                             <b>(lldb)</b> memory read/4xw 0xbffff3c0<br>
951                             <b>(lldb)</b> x/4xw 0xbffff3c0<br>
952                             <b>(lldb)</b> memory read --gdb-format 4xw 0xbffff3c0<br>
953                         </td>
954                     </tr>
955
956                     <tr><td class="header" colspan="2">Read memory starting at the expression "argv[0]".</td></tr>
957                     <tr>
958                         <td class="content">
959                             <b>(gdb)</b> x argv[0]<br>
960                         </td>
961                         <td class="content">
962                             <b>(lldb)</b> memory read `argv[0]`<br>
963                                                         <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>
964                             <b>(lldb)</b> memory read --size `sizeof(int)` `argv[0]`<br>
965                         </td>
966                     </tr>
967
968                     <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>
969                     <tr>
970                         <td class="content">
971                           <b>(gdb)</b> set logging on<br>
972                           <b>(gdb)</b> set logging file /tmp/mem.txt<br>
973                           <b>(gdb)</b> x/512bx 0xbffff3c0<br>
974                           <b>(gdb)</b> set logging off<br>
975                         </td>
976                         <td class="content">
977                             <b>(lldb)</b> memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0<br>
978                             <b>(lldb)</b> me r -o/tmp/mem.txt -c512 0xbffff3c0<br>
979                             <b>(lldb)</b> x/512bx -o/tmp/mem.txt 0xbffff3c0<br>
980                         </td>
981                     </tr>
982
983                     <tr><td class="header" colspan="2">Save binary memory data starting at 0x1000 and ending at 0x2000 to a file.</td></tr>
984                     <tr>
985                         <td class="content">
986                             <b>(gdb)</b> dump memory /tmp/mem.bin 0x1000 0x2000
987                         </td>
988                         <td class="content">
989                             <b>(lldb)</b> memory read --outfile /tmp/mem.bin --binary  0x1000 0x2000<br>
990                             <b>(lldb)</b> me r -o /tmp/mem.bin -b 0x1000 0x2000<br>
991                         </td>
992                     </tr>
993                     <tr><td class="header" colspan="2">Get information about a specific heap allocation (available on Mac OS X only).</td></tr>
994                     <tr>
995                         <td class="content">
996                             <b>(gdb)</b> info malloc 0x10010d680
997                         </td>
998                         <td class="content">
999                             <b>(lldb)</b> command script import lldb.macosx.heap<br>
1000                             <b>(lldb)</b> process launch --environment MallocStackLogging=1 -- [ARGS]<br>       
1001                             <b>(lldb)</b> malloc_info --stack-history 0x10010d680<br>
1002                         </td>
1003                     </tr>
1004                     <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>
1005                     <tr>
1006                         <td class="content">
1007                         </td>
1008                         <td class="content">
1009                             <b>(lldb)</b> command script import lldb.macosx.heap<br>
1010                             <b>(lldb)</b> malloc_info --type 0x10010d680<br>
1011                         </td>
1012                     </tr>
1013                     <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>
1014                     <tr>
1015                         <td class="content">
1016                         </td>
1017                         <td class="content">
1018                             <b>(lldb)</b> command script import lldb.macosx.heap<br>
1019                             <b>(lldb)</b> ptr_refs EXPR <br>
1020                         </td>
1021                     </tr>
1022                     <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>
1023                     <tr>
1024                         <td class="content">
1025                         </td>
1026                         <td class="content">
1027                             <b>(lldb)</b> command script import lldb.macosx.heap<br>
1028                             <b>(lldb)</b> cstr_refs CSTRING<br>
1029                         </td>
1030                     </tr>
1031                     <tr><td class="header" colspan="2">Disassemble the current function for the current frame.</td></tr>
1032                     <tr>
1033                         <td class="content">
1034                             <b>(gdb)</b> disassemble
1035                         </td>
1036                         <td class="content">
1037                             <b>(lldb)</b> disassemble --frame<br>
1038                             <b>(lldb)</b> di -f
1039                         </td>
1040                     </tr>
1041
1042                     <tr><td class="header" colspan="2">Disassemble any functions named <b>main</b>.</td></tr>
1043                     <tr>
1044                         <td class="content">
1045                             <b>(gdb)</b> disassemble main
1046                         </td>
1047                         <td class="content">
1048                             <b>(lldb)</b> disassemble --name main<br>
1049                             <b>(lldb)</b> di -n main
1050                         </td>
1051                     </tr>
1052
1053                     <tr><td class="header" colspan="2">Disassemble an address range.</td></tr>
1054                     <tr>
1055                         <td class="content">
1056                             <b>(gdb)</b> disassemble 0x1eb8 0x1ec3
1057                         </td>
1058                         <td class="content">
1059                             <b>(lldb)</b> disassemble --start-address  0x1eb8 --end-address 0x1ec3<br>
1060                             <b>(lldb)</b> di -s 0x1eb8 -e 0x1ec3<br>
1061                         </td>
1062                     </tr>
1063
1064                     <tr><td class="header" colspan="2">Disassemble 20 instructions from a given address.</td></tr>
1065                     <tr>
1066                         <td class="content">
1067                             <b>(gdb)</b> x/20i 0x1eb8
1068                         </td>
1069                         <td class="content">
1070                             <b>(lldb)</b> disassemble --start-address  0x1eb8 --count 20<br>
1071                             <b>(lldb)</b> di -s 0x1eb8 -c 20<br>
1072                         </td>
1073                     </tr>
1074
1075                     <tr><td class="header" colspan="2">Show mixed source and disassembly for the current function for the current frame.</td></tr>
1076                     <tr>
1077                         <td class="content">
1078                             n/a
1079                         </td>
1080                         <td class="content">
1081                             <b>(lldb)</b> disassemble --frame --mixed<br>
1082                             <b>(lldb)</b> di -f -m
1083                         </td>
1084                     </tr>
1085
1086                     <tr><td class="header" colspan="2">Disassemble the current function for the current frame and show the opcode bytes.</td></tr>
1087                     <tr>
1088                         <td class="content">
1089                             n/a
1090                         </td>
1091                         <td class="content">
1092                             <b>(lldb)</b> disassemble --frame --bytes<br>
1093                             <b>(lldb)</b> di -f -b
1094                         </td>
1095                     </tr>
1096
1097                     <tr><td class="header" colspan="2">Disassemble the current source line for the current frame.</td></tr>
1098                     <tr>
1099                         <td class="content">
1100                             n/a
1101                         </td>
1102                         <td class="content">
1103                             <b>(lldb)</b> disassemble --line<br>
1104                             <b>(lldb)</b> di -l
1105                         </td>
1106                     </tr>
1107
1108                     </table>
1109                     <p>
1110                 </div>
1111                 <div class="postfooter"></div>
1112
1113                 <h1 class ="postheader">Executable and Shared Library Query Commands</h1>
1114                 <div class="post">
1115
1116                     <p>
1117
1118                     <table class="stats" width="620" cellspacing="0">
1119                     <tr>
1120                         <td class="hed" width="50%">GDB</td>
1121                         <td class="hed" width="50%">LLDB</td>
1122                     </tr>
1123
1124
1125                     <tr><td class="header" colspan="2">List the main executable and all dependent shared libraries.</td></tr>
1126                     <tr>
1127                         <td class="content">
1128                             <b>(gdb)</b> info shared<br>
1129                         </td>
1130                         <td class="content">
1131                             <b>(lldb)</b> image list<br>
1132                         </td>
1133                     </tr>
1134
1135                     <tr><td class="header" colspan="2">Look up information for a raw address in the executable or any shared libraries.</td></tr>
1136                     <tr>
1137                         <td class="content">
1138                             <b>(gdb)</b> info symbol 0x1ec4<br>
1139                         </td>
1140                         <td class="content">
1141                             <b>(lldb)</b> image lookup --address 0x1ec4<br>
1142                             <b>(lldb)</b> im loo -a 0x1ec4<br>
1143                         </td>
1144                     </tr>
1145
1146                     <tr><td class="header" colspan="2">Look up functions matching a regular expression in a binary.</td></tr>
1147                     <tr>
1148                         <td class="content">
1149                             <b>(gdb)</b> info function &lt;FUNC_REGEX&gt;<br>
1150                         </td>
1151                         <td class="content">
1152                             This one finds debug symbols:<br>
1153                             <b>(lldb)</b> image lookup -r -n &lt;FUNC_REGEX&gt;<br><br>
1154                             This one finds non-debug symbols:<br>
1155                             <b>(lldb)</b> image lookup -r -s &lt;FUNC_REGEX&gt;<br><br>
1156                             Provide a list of binaries as arguments to limit the search.
1157                         </td>
1158                     </tr>
1159
1160                     <tr><td class="header" colspan="2">Find full source line information.</td></tr>
1161                     <tr>
1162                         <td class="content">
1163                             <b>(gdb)</b> info line 0x1ec4<br>
1164                         </td>
1165                         <td class="content">
1166                           This one is a bit messy at present.  Do:<br><br>
1167                             <b>(lldb)</b> image lookup -v --address 0x1ec4<br><br>
1168                           and look for the LineEntry line, which will have the full source path and
1169                           line range information.<br>
1170                         </td>
1171                     </tr>
1172
1173                     <tr><td class="header" colspan="2">Look up information for an address in <b>a.out</b> only.</td></tr>
1174                     <tr>
1175                         <td class="content">
1176                         </td>
1177                         <td class="content">
1178                             <b>(lldb)</b> image lookup --address 0x1ec4 a.out<br>
1179                             <b>(lldb)</b> im loo -a 0x1ec4 a.out<br>
1180                         </td>
1181                     </tr>
1182
1183                     <tr><td class="header" colspan="2">Look up information for for a type <code>Point</code> by name.</td></tr>
1184                     <tr>
1185                         <td class="content">
1186                             <b>(gdb)</b> ptype Point<br>
1187                         </td>
1188                         <td class="content">
1189                             <b>(lldb)</b> image lookup --type Point<br>
1190                             <b>(lldb)</b> im loo -t Point<br>
1191                         </td>
1192                     </tr>
1193
1194                     <tr><td class="header" colspan="2">Dump all sections from the main executable and any shared libraries.</td></tr>
1195                     <tr>
1196                         <td class="content">
1197                             <b>(gdb)</b> maintenance info sections<br>
1198                         </td>
1199                         <td class="content">
1200                             <b>(lldb)</b> image dump sections<br>
1201                         </td>
1202                     </tr>
1203
1204                     <tr><td class="header" colspan="2">Dump all sections in the <b>a.out</b> module.</td></tr>
1205                     <tr>
1206                         <td class="content">
1207                         </td>
1208                         <td class="content">
1209                             <b>(lldb)</b> image dump sections a.out<br>
1210                         </td>
1211                     </tr>
1212
1213                     <tr><td class="header" colspan="2">Dump all symbols from the main executable and any shared libraries.</td></tr>
1214                     <tr>
1215                         <td class="content">
1216                         </td>
1217                         <td class="content">
1218                             <b>(lldb)</b> image dump symtab<br>
1219                         </td>
1220                     </tr>
1221
1222                     <tr><td class="header" colspan="2">Dump all symbols in <b>a.out</b> and <b>liba.so</b>.</td></tr>
1223                     <tr>
1224                         <td class="content">
1225                         </td>
1226                         <td class="content">
1227                             <b>(lldb)</b> image dump symtab a.out liba.so<br>
1228                         </td>
1229                     </tr>
1230
1231                     </table>
1232                     <p>
1233                 </div>
1234             <div class="postfooter"></div>
1235             <h1 class ="postheader">Miscellaneous</h1>
1236                 <div class="post">
1237                     <p>
1238                     <table class="stats" width="620" cellspacing="0">
1239                     <tr>
1240                         <td class="hed" width="50%">GDB</td>
1241                         <td class="hed" width="50%">LLDB</td>
1242                     </tr>
1243
1244                     <tr><td class="header" colspan="2">Echo text to the screen.</td></tr>
1245                     <tr>
1246                         <td class="content">
1247                             <b>(gdb)</b> echo Here is some text\n<br>
1248                         </td>
1249                         <td class="content">
1250                             <b>(lldb)</b> script print &quot;Here is some text&quot;<br>
1251                         </td>
1252                     </tr>
1253
1254                     <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>
1255                     <tr>
1256                         <td class="content">
1257                             <b>(gdb)</b> set pathname-substitutions /buildbot/path /my/path<br>
1258                         </td>
1259                         <td class="content">
1260                             <b>(lldb)</b> settings set target.source-map /buildbot/path /my/path<br>
1261                         </td>
1262                     </tr>
1263
1264                     <tr><td class="header" colspan="2">Supply a catchall directory to search for source files in.</td></tr>
1265                     <tr>
1266                         <td class="content">
1267                             <b>(gdb)</b> directory /my/path<br>
1268                         </td>
1269                         <td class="content">
1270                             (<i>No equivalent command - use the source-map instead.</i>)<br>
1271                         </td>
1272                     </tr>
1273
1274                     </table>
1275                     <p>
1276                 </div>
1277
1278                 <div class="postfooter"></div>
1279
1280                 <p>
1281
1282
1283             </div>
1284         </div>
1285     </div>
1286 </div>
1287 </body>
1288 </html>