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