LLDB: List source code

前端 未结 2 1560
盖世英雄少女心
盖世英雄少女心 2021-02-07 11:14

My single most used gdb command is l followed by n followed by l -.

How can I get the same in lldb?

I am

2条回答
  •  天涯浪人
    2021-02-07 11:35

    In Xcode 4.6, lldb's l alias is a simple shortcut for source list.

    In the top of tree sources, this has been improved to behave more like gdb. If you look at source/Interpreter/CommandInterpreter.cpp over at http://lldb.llvm.org/ you'll see that l is now a regular expression command alias with these cases:

    if (list_regex_cmd_ap->AddRegexCommand("^([0-9]+)[[:space:]]*$", "source list --line %1") &&
        list_regex_cmd_ap->AddRegexCommand("^(.*[^[:space:]])[[:space:]]*:[[:space:]]*([[:digit:]]+)[[:space:]]*$", "source list --file '%1' --line %2") &&
        list_regex_cmd_ap->AddRegexCommand("^\\*?(0x[[:xdigit:]]+)[[:space:]]*$", "source list --address %1") &&
        list_regex_cmd_ap->AddRegexCommand("^-[[:space:]]*$", "source list --reverse") &&
        list_regex_cmd_ap->AddRegexCommand("^-([[:digit:]]+)[[:space:]]*$", "source list --reverse --count %1") &&
        list_regex_cmd_ap->AddRegexCommand("^(.+)$", "source list --name \"%1\"") &&
        list_regex_cmd_ap->AddRegexCommand("^$", "source list"))
    

    With these cases, you will get behavior like this:

    Show current frame:

    (lldb) f
    #0: 0x0000000100000f2b a.out`main + 27 at a.c:15
       12   
       13   
       14   
    -> 15       puts ("hi"); // line 15
       16   
       17       puts ("hi"); // line 17
       18   }
    

    show previous ten lines:

    (lldb) l -
       5    
       6    
       7    
       8    
       9        puts ("hi"); // line 9
       10   
       11   
    

    You can also use the stop-line-count-after and stop-line-count-before settings to control how much source context is displayed at frame stops.

    Note that you can create your own regular expression command alias in your ~/.lldbinit file with the same behavior as the top-of-tree lldb's l. See help command regex for the syntax and an example.

提交回复
热议问题