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