第二章:Help 和 Apropos

就像其他大型开发者工具一样,LLDB 提供了大量的文档。 知道如何浏览这个文档 —— 包括一些比较晦涩的命令标志 —— 对于掌握 LLDB 是非常重要的。

“help”命令

打开终端窗口并输入 lldb。 LLDB 提示符将出现。 然后只需输入 help 命令:

(lldb) help

这将显示出所有可用的命令,包括从 ~/.lldbinit 中加载的自定义命令 —— 稍后会更多。

Help & Apropos-1.png

LLDB 可以使用相当多的命令。

但是,许多命令有大量子命令,而子命令又有子命令,这些命令也有自己的相关文档。 我告诉过你这是一个庞大的文件量!

以 breakpoint 命令为例。 通过输入以下内容运行 breakpoint 文档:

(lldb) help breakpoint

你会看到下面的输出:

 Commands for operating on breakpoints (see 'help b' for shorthand.)

Syntax: breakpoint

The following subcommands are supported:

  clear   -- Delete or disable breakpoints matching the specified
             source file and line.
  command -- Commands for adding, removing and listing LLDB commands
             executed when a breakpoint is hit.
  delete  -- Delete the specified breakpoint(s).  If no breakpoints are
             specified, delete them all.
  disable -- Disable the specified breakpoint(s) without deleting them.
             If none are specified, disable all breakpoints.
  enable  -- Enable the specified disabled breakpoint(s). If no
             breakpoints are specified, enable all of them.
  list    -- List some or all breakpoints at configurable levels of
             detail.
  modify  -- Modify the options on a breakpoint or set of breakpoints
             in the executable.  If no breakpoint is specified, acts on
             the last created breakpoint.  With the exception of -e, -d
             and -i, passing an empty argument clears the modification.
  name    -- Commands to manage name tags for breakpoints
  read    -- Read and set the breakpoints previously saved to a file
             with "breakpoint write".
  set     -- Sets a breakpoint or set of breakpoints in the executable.
  write   -- Write the breakpoints listed to a file that can be read in
             with "breakpoint read".  If given no arguments, writes all
             breakpoints.

For more help on any particular subcommand, type 'help <command> <subcommand>'.

你可以在这里看到几个支持的子命令。 通过输入以下内容查找 breakpoint name 的文档:

(lldb) help breakpoint name

你会看到下面的输出:

   Commands to manage name tags for breakpoints

Syntax: breakpoint name

The following subcommands are supported:

      add    -- Add a name to the breakpoints provided.
      delete -- Delete a name from the breakpoints provided.
      list   -- List either the names for a breakpoint or the breakpoints for a given name.

For more help on any particular subcommand, type 'help <command> <subcommand>'.

如果你目前不了解 breakpoint name,不要担心 —— 你很快就会熟悉断点和所有其子命令。 现在,help 命令是你要记住的最重要的命令。

“apropos”命令

有时你不知道你正在搜索的命令的名字,但你知道某个单词或短语可能会指引你正确的方向。 apropos 命令可以为你做这个,这有点像使用搜索引擎在网上找东西。

apropos 将根据 LLDB 文档对任何单词或字符串进行不区分大小写的搜索,并返回匹配的结果。 例如,尝试搜索有关 Swift 的任何内容:

(lldb) apropos swift

你会看到下面的输出:

The following commands may relate to 'swift':
  swift    -- A set of commands for operating on the Swift Language Runtime.
  demangle -- Demangle a Swift mangled name
  refcount -- Inspect the reference count data for a Swift object

The following settings variables may relate to 'swift':


  target.swift-framework-search-paths -- List of directories to be searched when locating frameworks for Swift.
  target.swift-module-search-paths -- List of directories to be searched when locating modules for Swift.
  target.use-all-compiler-flags -- Try to use compiler flags for all modules when setting up the Swift expression parser, not just the main executable.

这显示了与 Swift 这个单词有关的所有内容:首先是命令,然后是 LLDB 设置,这些设置可以用来控制 LLDB 的运行方式。

你也可以使用 apropos 来搜索特定的句子。 例如,如果你正在寻找引用计数的相关内容,则可以尝试以下操作:

(lldb) apropos "reference count"
The following commands may relate to 'reference count':
  refcount -- Inspect the reference count data for a Swift object

注意包裹“reference count”的引号。 apropos 只接受一个参数来搜索,所以引号是必要的,把输入作为一个单一的参数。

灵活吧?apropos 是一个方便查询的工具。 它不像现代的互联网搜索引擎那么复杂,不过,你尝试几次,通常能找到你要找的内容。

接下来?

很容易忘记即将到来的大量 LLDB 命令的猛攻,但尽量把 help 和 apropos 这两个命令记在心里。 它们是查询命令信息的基础,而且在你掌握调试的时候,你会一直使用它们。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容