(lldb)help breakpoint name
# 用于管理断点的名称标记的命令
Syntax: breakpoint name <subcommand>[<command-options>]
The following subcommands are supported:
add # 向指定的断点添加一个名称
configure # 为指定的断点名称配置选项# 如果你提供了一个断点 ID,则将从该断点复制这些配置选项,否则将只在该名称上设置指定的配置选项
delete # 从指定的断点中删除断点名称
list # 列出断点名称或有关给定断点名称的信息# 如果不带参数,则列出所有断点名称
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help breakpoint name list
# 列出断点名称或有关给定断点名称的信息# 如果不带参数,则列出所有断点名称
Syntax: breakpoint name list <command-options>
Command Options Usage:
list [-D]
-D ( --dummy-breakpoints )# 在虚拟断点上进行操作# 例如: 在提供文件之前设置的断点,主要用于新的 target
(lldb)help frame
# 用于选择和检视当前线程的栈帧的命令
Syntax: frame <subcommand>[<subcommand-options>]
The following subcommands are supported:
info # 列出有关当前线程中当前栈帧的信息
recognizer # 用于编辑和查看帧识别器的命令select# 在当前线程中根据索引选择当前的栈帧(请参阅 'thread backtrace')
variable # 显示当前栈帧的变量# 默认为作用域内的所有参数和局部变量# 可以指定参数、局部变量、文件静态变量和文件全局变量的名称# 可以指定聚合变量的子变量,例如: 'var->child.x'# 'frame variable' 命令中的操作符 -> 和 [] 不会调用操作符重载,而是直接访问指定的元素# 如果要触发操作符的重载,则请使用 'expression' 命令来打印变量# 值得注意的是,除了重载操作符外,当打印局部变量时,'expr local_var' 命令和 'frame var local_var' 命令会产生相同的结果# 然而,'frame variable' 命令更具效率,因为它使用调试信息和直接读取内存,而不是解析和执行一个表达式(这可能涉及 JITing 和在目标程序中运行代码)
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
frame info
(lldb)help frame info
# 列出有关当前线程中当前栈帧的信息
Syntax: frame info
frame recognizer
(lldb)help frame recognizer
# 用于编辑和查看帧识别器的命令
Syntax: frame recognizer [<sub-command-options>]
The following subcommands are supported:
add # 添加一个新的帧识别器clear# 删除所有帧识别器
delete # 删除一个帧识别器
info # 显示对指定的栈帧所应用的帧识别器(如果有的话)
list # 显示活动的帧识别器的列表
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help language
# 用于指定要在运行时操作的语言(C++、OC、RenderScript、Swift)
Syntax: language <language-name><subcommand>[<subcommand-options>]
The following subcommands are supported:
cplusplus # 用于在 C++ 语言运行时上操作的命令
objc # 用于在 Objective-C 语言运行时上操作的命令
renderscript # 用于在 RenderScript 运行时上操作的命令
swift # 用于在 Swift 语言运行时上操作的命令
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language cplusplus
(lldb)help language cplusplus
# 用于在 C++ 语言运行时上操作的命令
Syntax: cplusplus <subcommand>[<subcommand-options>]
The following subcommands are supported:
demangle # demangle 一个 C++ mangled name
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language cplusplus demangle
(lldb)help language cplusplus demangle
# demangle 一个 C++ mangled name
Syntax: language cplusplus demangle
language objc
(lldb)help language objc
# 用于在 Objective-C 语言运行时上操作的命令
Syntax: objc <subcommand>[<subcommand-options>]
The following subcommands are supported:
class-table # 用于操作 Objective-C class table 的命令
tagged-pointer # 用于操作 Objective-C tagged pointer 的命令
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language objc class-table
(lldb)help language objc class-table
# 用于操作 Objective-C class table 的命令
Syntax: class-table <subcommand>[<subcommand-options>]
The following subcommands are supported:
dump # 转储有关当前进程中已知的 Objective-C 类的信息
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help language objc tagged-pointer
# 用于操作 Objective-C tagged pointer 的命令
Syntax: class-table <subcommand>[<subcommand-options>]
The following subcommands are supported:
info # 转储有关 tagged pointer 的信息
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help language objc tagged-pointer info
# 转储有关 tagged pointer 的信息
Syntax: language objc tagged-pointer info
language renderscript
(lldb)help language renderscript
# 用于在 RenderScript 运行时上操作的命令
Syntax: renderscript <subcommand>[<subcommand-options>]
The following subcommands are supported:
allocation # 处理 RenderScript 的 allocation 的命令
context # 处理 RenderScript 的 context 的命令
kernel # 处理 RenderScript 的 kernel 的命令
module # 处理 RenderScript 的 module 的命令
reduction # 处理 RenderScript 的 general reduction kernel 的命令
scriptgroup # 用于与 ScriptGroup 交互的命令
status # 显示当前的 RenderScript 运行时状态
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language renderscript allocation
(lldb)help language renderscript allocation
# 处理 RenderScript 的 allocation 的命令
Syntax: renderscript allocation
The following subcommands are supported:
dump # 显示特定的 allocation 的内容
list # 列出 RenderScript 的 allocation 及其信息
load # 从文件中加载 RenderScript allocation 的内容
refresh # 重新计算所有 allocation 的细节
save # 将 RenderScript allocation 的内容写入到文件中
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language renderscript context
(lldb)help language renderscript context
# 处理 RenderScript 的 context 的命令
Syntax: renderscript context
The following subcommands are supported:
dump # 转储 RenderScript 的上下文信息
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language renderscript kernel
(lldb)help language renderscript kernel
# 处理 RenderScript 的 kernel 的命令
Syntax: renderscript kernel
The following subcommands are supported:
breakpoint # 在 RenderScript 的内核上生成断点的命令
coordinate # 显示当前内核调用的 (x,y,z) 坐标
list # 列出 RenderScript 内核名称和关联的脚本资源
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language renderscript module
(lldb)help language renderscript module
# 处理 RenderScript 的 module 的命令
Syntax: renderscript module
The following subcommands are supported:
dump # 转储所有模块的 RenderScript 的特定信息
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language renderscript reduction
(lldb)help language renderscript reduction
# 处理 RenderScript 的 general reduction kernel 的命令
Syntax: renderscript reduction
The following subcommands are supported:
breakpoint # 在渲染脚本的 general reduction kernel 上操作断点的命令
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language renderscript scriptgroup
(lldb)help language renderscript scriptgroup
# 用于与 ScriptGroup 交互的命令
Syntax: renderscript scriptgroup
The following subcommands are supported:
breakpoint # 渲染脚本 ScriptGroup 断点交互
list # 列出所有当前发现的 ScriptGroup
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language renderscript status
(lldb)help language renderscript scriptgroup
# 显示当前的 RenderScript 运行时状态
Syntax: renderscript scriptgroup
The following subcommands are supported:
breakpoint # RenderScript ScriptGroup 断点交互
list # 列出当前发现的所有 ScriptGroup
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language swift
(lldb)help language swift
# 用于在 Swift 语言运行时上操作的命令
Syntax: swift <subcommand>[<subcommand-options>]
The following subcommands are supported:
demangle # demangle 一个 Swift mangled name
refcount # 检视 Swift 对象的引用计数# 期望使用原始输入(请参阅 'help raw-input')
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
language swift demangle
(lldb)help language swift demangle
# demangle 一个 Swift mangled name
Syntax: language swift demangle
Command Options Usage:
demangle [-e]
-e ( --expand )# LLDB 是否应该打印 demangled tree
language swift refcount
(lldb)help language swift refcount
# 检视 Swift 对象的引用计数# 期望使用原始输入(请参阅 'help raw-input')
Syntax: language swift refcount
log
(lldb)help log
# 用于控制 LLDB 内部日志记录的命令
Syntax: log <subcommand>[<command-options>]
The following subcommands are supported:
disable # 禁用一个或多个日志通道类别enable# 启用单个日志通道的日志记录
list # 列出一个或多个日志通道的日志类别# 如果没有指定列出哪个日志通道,则列出所有日志通道
timers # 启用、禁用、转储、重置 LLDB 内部性能计时器
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help memory
# 用于操作当前目标进程中的内存的命令
Syntax: memory <subcommand>[<subcommand-options>]
The following subcommands are supported:
find# 在当前目标进程的内存中查找指定的值history# 打印与地址关联的分配(allocation)/释放(deallocation)事件的(已记录的)堆栈跟踪read# 从当前目标进程的内存中读取
region # 获取当前目标进程中包含特定地址的内存区域的信息write# 写入到当前目标进程的内存中
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help platform file# 用于访问当前系统平台上的文件的命令
Syntax: platform file[open|close|read|write]...
The following subcommands are supported:
close # 关闭远程终端的文件open# 打开远程终端的文件read# 从远程终端的文件中读取数据write# 将数据写入远程终端的文件中
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
platform file close
(lldb)help platform file close
# 关闭远程终端的文件
Syntax: platform file close
platform file open
(lldb)help platform fileopen# 打开远程终端的文件
Syntax: platform fileopen<cmd-options>
Command Options Usage:
platform fileopen[-RWXdertwx][-s <perms=string>][-v <perms-numeric>]
-R ( --group-read )# 允许读取: group
-W ( --group-write )# 允许写入: group
-X ( --group-exec )# 允许执行: group
-d ( --world-read )# 允许读取: all
-e ( --world-exec )# 允许执行: all
-r ( --user-read )# 允许读取: user
-s <perms=string>( --permissions-string <perms=string>)# 使用字符串的形式给出权限(例如: rwxr-xr--)
-t ( --world-write )# 允许写入: all
-v <perms-numeric>( --permissions-value <perms-numeric>)# 使用数字的形式给出权限(例如: 757)
-w ( --user-write )# 允许写入: user
-x ( --user-exec )# 允许执行: user
(lldb)help platform list
# 列出所有可用的系统平台
Syntax: platform list
platform mkdir
(lldb)help platform mkdir# 在远程终端创建一个新目录
Syntax: platform mkdir<cmd-options>
Command Options Usage:
platform mkdir[-RWXdertwx][-s <perms=string>][-v <perms-numeric>]
-R ( --group-read )# 允许读取: group
-W ( --group-write )# 允许写入: group
-X ( --group-exec )# 允许执行: group
-d ( --world-read )# 允许读取: all
-e ( --world-exec )# 允许执行: all
-r ( --user-read )# 允许读取: user
-s <perms=string>( --permissions-string <perms=string>)# 使用字符串的形式给出权限(例如: rwxr-xr--)
-t ( --world-write )# 允许写入: all
-v <perms-numeric>( --permissions-value <perms-numeric>)# 使用数字的形式给出权限(例如: 757)
-w ( --user-write )# 允许写入: user
-x ( --user-exec )# 允许执行: user
platform process
(lldb)help platform process
# 用于(查询、启动、附加到)当前系统平台上的进程的命令
Syntax: platform process [attach|launch|list]...
The following subcommands are supported:
attach # 附加到指定的进程中
info # 通过进程 ID 获取一个或多个进程的详细信息
launch # 在远程系统平台上启动一个新进程
list # 在远程系统平台上列出与指定的(名称、进程 ID、其他属性)相匹配的进程
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help plugin structured-data
# 每个插件结构化数据命令的父级
Syntax: plugin structured-data <plugin>
The following subcommands are supported:
darwin-log # 用于配置 Darwin os_log 支持的命令
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
plugin structured-data darwin-log
(lldb)help plugin structured-data darwin-log
# 用于配置 Darwin os_log 支持的命令
Syntax: plugin structured-data darwin-log
The following subcommands are supported:
disable # 禁用 Darwin 日志收集enable# 启用 Darwin 日志收集,或使用修改后的配置重新启用 Darwin 日志收集
status # 显示是否有受支持的 Darwin 日志可用并已启用
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help register
# 用于访问当前线程和栈帧的寄存器的命令# hcg 注:# 寄存器(register)是跟线程(thread)相关的,想一下多核 CPU 与多线程的关系
Syntax: register [read|write]...
The following subcommands are supported:
read# 从当前栈帧转储一个或多个寄存器的值# 如果未指定任何寄存器,则转储全部寄存器的值write# 修改单个寄存器的值
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)helpsource# 用于检查由当前目标进程的调试信息所描述的源代码的命令
Syntax: source<subcommand>[<subcommand-options>]
The following subcommands are supported:
info # 显示当前目标进程的源代码行信息# 默认为当前栈帧中的指令指针寄存器(IP)所指向的内容(对于 x86 架构)# 默认为当前栈帧中的程序计数寄存器(PC)所指向的内容(对于 arm 架构)
list # 显示由选项指定的当前目标进程的源代码
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
source info
(lldb)helpsource info
# 显示当前目标进程的源代码行信息# 默认为当前栈帧中的指令指针寄存器(IP)所指向的内容(对于 x86 架构)# 默认为当前栈帧中的程序计数寄存器(PC)所指向的内容(对于 arm 架构)
Syntax: source info <cmd-options>
Command Options Usage:
source info [-c <count>][-e <linenum>][-f <filename>][-l <linenum>][-s <shlib-name>]source info [-c <count>][-n <symbol>][-s <shlib-name>]source info [-a <address-expression>][-c <count>]
-a <address-expression>( --address <address-expression>)# 查找指定的地址并显示相应文件和行的源代码信息
-c <count>( --count <count>)# 要显示的源代码的行数
-e <linenum>( --end-line <linenum>)# 要结束显示源代码的行号
-f <filename>( --file <filename>)# 要显示源代码的文件
-l <linenum>( --line <linenum>)# 要开始显示源代码的行号
-n <symbol>( --name <symbol>)# 要显示其源代码的函数的名称
-s <shlib-name>( --shlib <shlib-name>)# 在给定的模块或共享库中查找源代码# 可以多次重复此选项以指定多个模块或共享库
(lldb)help statistics
# 用于打印有关调试会话的统计信息
Syntax: statistics <subcommand>[<subcommand-options>]
The following subcommands are supported:
disable # 禁用统计信息收集
dump # 转储统计结果enable# 启用统计信息收集
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help target stop-hook list
# 列出所有的 stop-hook
Syntax: target stop-hook list [<type>]
target symbols
(lldb)help target symbols
# 用于添加和管理调试符号文件的命令
Syntax: target symbols <sub-command>...
The following subcommands are supported:
add # 通过指定调试符号文件的路径或使用选项指定要为其下载符号的模块,将调试符号文件添加到 target 的当前模块之一
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)help thread list
# 显示当前目标进程中每个线程的摘要# 使用 'settings set thread-format' 自定义线程列表的输出格式
Syntax: thread list
thread plan
(lldb)help thread plan
# 管理用于控制执行的线程计划
Syntax: thread plan <subcommand>[<subcommand objects]
The following subcommands are supported:
discard # 废弃直到(并包括)指定索引的线程计划(请参阅 'thread plan list')# 只能废弃用户可见的线程计划
list # 显示一个或多个线程的线程计划# 如果未指定任何线程,则显示当前线程的线程计划# 使用线程索引 "all" 查看所有线程的线程计划
prune # 删除与当前未报告的线程关联的任何线程计划# 指定一个或多个要删除的 TID,或者如果没有指定任何 TID,则删除所有未报告线程的线程计划
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
thread plan discard
(lldb)help thread plan discard
# 废弃直到(并包括)指定索引的线程计划(请参阅 'thread plan list')# 只能废弃用户可见的线程计划
Syntax: thread plan discard <unsigned-integer>
thread plan list
(lldb)help thread plan list
# 显示一个或多个线程的线程计划# 如果未指定任何线程,则显示当前线程的线程计划# 使用线程索引 "all" 查看所有线程的线程计划
Syntax: thread plan list <cmd-options>
Command Options Usage:
thread plan list [-iuv][-t <thread-id>]
-i ( --internal )# 显示内部线程计划和用户线程计划
-t <thread-id>( --thread-id <thread-id>)# 列出此 TID 的线程计划# 可以多次重复此选项以指定多个线程
-u ( --unreported )# 显示未报告线程的线程计划
-v ( --verbose )# 显示有关线程计划的更多信息
thread plan prune
(lldb)help thread plan prune
# 删除与当前未报告的线程关联的任何线程计划# 指定一个或多个要删除的 TID,或者如果没有指定任何 TID,则删除所有未报告线程的线程计划
Syntax: thread plan prune [<thread-id>[<thread-id>[...]]]
(lldb)helptype# 用于在类型系统(type system)上操作的命令
Syntax: type[<sub-command-options>]
The following subcommands are supported:
category # 对类型的类别进行操作的命令
filter # 对类型的过滤器进行操作的命令format# 用于自定义值的显示格式的命令
lookup # 在当前 target 中查找类型和声明,遵循特定于语言的命名约定# 期望使用原始输入(请参阅 'help raw-input')
summary # 用于编辑变量摘要显示格式的命令
synthetic # 用于操作合成提供程序类型表示的命令
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
type category
(lldb)helptype category
# 对类型的类别进行操作的命令
Syntax: type category [<sub-command-options>]
The following subcommands are supported:
define # 定义一个新类别作为格式化程序的源
delete # 删除指定的类别及其相关的格式化程序
disable # 禁用(一个作为格式化程序的源)的类别enable# 启用一个类别(以作为格式化程序的源)
list # 提供所有现有类别的列表
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)helptype category list
# 提供所有现有类别的列表
Syntax: type category list [<name>]
type filter
(lldb)helptype filter
# 对类型的过滤器进行操作的命令
Syntax: type synthetic [<sub-command-options>]
The following subcommands are supported:
add # 为指定的类型添加新的过滤器clear# 删除所有现有的过滤器
delete # 删除指定类型的指定过滤器
list # 显示当前过滤器的列表
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
type filter add
(lldb)helptype filter add
# 为指定的类型添加新的过滤器
Syntax: type filter add <cmd-options><name>[<name>[...]]
Command Options Usage:
type filter add [-prx][-C <boolean>][-w <name>][-c <expr-path>]<name>[<name>[...]]
-C <boolean>( --cascade <boolean>)# 如果为 true,则通过 typedef 链级联
-c <expr-path>( --child <expr-path>)# 在综合视图(synthetic view)中包含此表达式路径
-p ( --skip-pointers )# 不要对指针类型的对象(pointers-to-type object)使用此格式# 即,不要对指定类型的值的指针使用此格式
-r ( --skip-references )# 不要对引用类型的对象(references-to-type object)使用此格式# 即,不要对指定类型的值的引用使用此格式
-w <name>( --category <name>)# 将此过滤器添加到给定的类别,而不是默认的类别
-x ( --regex )# 类型名称实际上是正则表达式# 以下 'type filter add' 的示例,引用此代码片段以获取上下文:
class Foo {
int a;
int b;
int c;
int d;
int e;
int f;
int g;
int h;
int i;}
Foo my_foo;# 添加一个简单的过滤器:# 生成仅显示 my_foo.a 和 my_foo.g 的输出(lldb)type filter add --child a --child g Foo
(lldb) frame variable my_foo
# my_foo 的其他子项 (b, c, d, e, f, h, i) 可以通过显式指定的方式来获取:(lldb) frame variable my_foo.b my_foo.c my_foo.i
# frame variable 上的格式化选项 --raw 会绕过过滤器,显示 my_foo 的所有子项,就好像没有定义过滤器一样:(lldb) frame variable my_foo --raw
# 此命令接受命令选项(options)和自由格式的参数(free-form arguments)# 如果参数类似于选项说明符(即,参数以 - 或 -- 开头),则必须在命令选项的结尾和参数的开头之间使用 ' -- '
type filter clear
(lldb)helptype filter clear# 删除所有现有的过滤器
Syntax: type filter clear<cmd-options>
Command Options Usage:
type filter clear[-a]
-a ( --all )# 删除所有类别的过滤器
(lldb)helptype filter list
# 显示当前过滤器的列表
Syntax: type filter list <cmd-options>[<name>]
Command Options Usage:
type filter list [-w <name>][<name>]type filter list [-l <source-language>][<name>]
-l <source-language>( --language <source-language>)# 仅显示指定语言的过滤器列表
-w <name>( --category-regex <name>)# 仅显示与此类别匹配的过滤器列表# 此命令接受命令选项(options)和自由格式的参数(free-form arguments)# 如果参数类似于选项说明符(即,参数以 - 或 -- 开头),则必须在命令选项的结尾和参数的开头之间使用 ' -- '
type format
(lldb)helptypeformat# 用于自定义值的显示格式的命令
Syntax: typeformat[<sub-command-options>]
The following subcommands are supported:
add # 为指定的类型添加新的格式样式clear# 删除所有现有的格式样式
delete # 删除指定类型的指定格式样式
info # 此命令执行指定的表达式,并显示将以哪种格式样式应用于表达式的结果值(如果表达式有结果值的话)# 期望使用原始输入(请参阅 'help raw-input')
list # 显示当前格式样式列表
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)helptype summary
# 用于编辑变量摘要显示格式的命令
Syntax: type summary [<sub-command-options>]
The following subcommands are supported:
add # 为指定的类型添加新的摘要样式clear# 删除所有现有的摘要样式
delete # 删除指定类型的指定摘要样式
info # 此命令执行指定的表达式,并显示将以哪种摘要样式应用于表达式的结果值(如果表达式有结果值的话)# 期望使用原始输入(请参阅 'help raw-input')
list # 显示当前摘要样式列表
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
type summary add
(lldb)helptype summary add
# 为指定的类型添加新的摘要样式
Syntax: type summary add <cmd-options><name>[<name>[...]]
Command Options Usage:
type summary add -c [-Oprvx][-C <boolean>][-w <name>]<name>[<name>[...]]type summary add [-ehprvx] -s <summary-string>[-C <boolean>][-w <name>][-n <name>]<name>[<name>[...]]type summary add [-Pehprvx][-C <boolean>][-w <name>][-n <name>][-F <python-function>][-o <python-script>]<name>[<name>[...]]
-C <boolean>( --cascade <boolean>)# 如果为 true,则通过 typedef 链级联
-F <python-function>( --python-function <python-function>)# 指定用于此类型的 Python 函数的名称
-O ( --omit-names )# 如果为 true,则在摘要显示中省略值的名称
-P ( --input-python )# 手动输入要用于此类型的 Python 代码
-c ( --inline-children )# 如果为 true,则将所有子项的值内联到摘要字符串中
-e ( --expand )# 展开聚合数据类型,以在单独的行上显示子项
-h ( --hide-empty )# 不要展开没有子项的聚合数据类型
-n <name>( --name <name>)# 此摘要字符串的名称
-o <python-script>( --python-script <python-script>)# 提供一个单行 Python 脚本作为命令的一部分
-p ( --skip-pointers )# 不要对指针类型的对象(pointers-to-type object)使用此格式# 即,不要对指定类型的值的指针使用此格式
-r ( --skip-references )# 不要对引用类型的对象(references-to-type object)使用此格式# 即,不要对指定类型的值的引用使用此格式
-s <summary-string>( --summary-string <summary-string>)# 用于显示文本和对象内容的摘要字符串
-v ( --no-value )# 对于此种类型,不显示值,只显示摘要
-w <name>( --category <name>)# 将此摘要样式添加到给定的类别,而不是默认的类别
-x ( --regex )# 类型名称实际上是正则表达式# 以下 'type summary add' 的示例,引用此代码片段以获取上下文:
struct JustADemo
{
int* ptr;
float value;
JustADemo(int p = 1, float v= 0.1): ptr(new int(p)), value(v){}};
JustADemo demo_instance(42, 3.14);
typedef JustADemo NewDemo;
NewDemo new_demo_instance(42, 3.14);# 之后用 'frame variable' 或 'expression' 打印 demo_instance,将会显示 "the answer is 42"(lldb)type summary add --summary-string "the answer is ${*var.ptr}" JustADemo
# 之后用 'frame variable' 或 'expression' 打印 demo_instance,将会显示 "the answer is 42 and the question is 3.14"(lldb)type summary add --summary-string "the answer is ${*var.ptr}, and the question is ${var.value}" JustADemo
# 或者,你可以为所有指向整数的指针定义格式,并在格式化 JustADemo 时依赖它以获得相同的结果:(lldb)type summary add --summary-string "${var%V} -> ${*var}""int *"(lldb)type summary add --summary-string "the answer is ${var.ptr}, and the question is ${var.value}" JustADemo
# 类型摘要会自动应用于派生的 typedef,因此上面的示例适用于 JustADemo 和 NewDemo# 级联选项可用于抑制此行为,该摘要现在将用于 JustADemo 的值而不是 NewDemo 的值:(lldb)type summary add --summary-string "${var.ptr}, ${var.value}, {${var.byte}}" JustADemo -C no
# 默认情况下,会显示对指定类型的值的指针和引用的摘要# 使用 -p 选项可以抑制对指定类型的值的指针的摘要# 使用 -r 选项可以抑制对指定类型的值的引用的摘要(lldb)type summary add -p -r --summary-string "${var.ptr}, ${var.value}, {${var.byte}}" JustADemo
# 通过传递 -c 选项,可以推断出包含类型中所有字段的单行摘要,而无需提供显式的摘要字符串:(lldb)type summary add -c JustADemo
(lldb) frame variable demo_instance (ptr=<address>, value=3.14)# 类型摘要通常会抑制单个字段的嵌套显示# 如果要提供摘要以补充默认结构,则请添加 -e 选项:(lldb)type summary add -e --summary-string "*ptr = ${*var.ptr}" JustADemo
# 现在,在显示 JustADemo 的值时,会显示 int*,然后是标准的 LLDB 子序列,每行一个:
*ptr = 42 {
ptr =<address>
value = 3.14
}# 你还可以添加用 Python 编写的摘要# 这些脚本使用 LLDB 的公共 API,从变量中收集信息并生成有意义的摘要# 如果要启动多行脚本,则请使用 -P 选项# 函数声明将与描述这两个参数的注释一起显示# 在单独的一行中使用单词 'DONE' 结束脚本(lldb)type summary add JustADemo -P
def function(valobj,internal_dict):
"""valobj: an SBValue which you want to provide a summary for internal_dict: an LLDB support object not to be used"""
value = valobj.GetChildMemberWithName('value');return'My value is ' + value.GetValue();
DONE
# 或者,如果要提供简单的单行 Python 脚本,则可以使用 -o 选项:(lldb)type summary add JustADemo -o "value = valobj.GetChildMemberWithName('value'); return 'My value is ' + value.GetValue();"# 此命令接受命令选项(options)和自由格式的参数(free-form arguments)# 如果参数类似于选项说明符(即,参数以 - 或 -- 开头),则必须在命令选项的结尾和参数的开头之间使用 ' -- '
type summary clear
(lldb)helptype summary clear# 删除所有现有的摘要样式
Syntax: type summary clear<cmd-options>
Command Options Usage:
type summary clear[-a]
-a ( --all )# 删除所有类别的摘要样式
(lldb)helptype summary info
# 此命令执行指定的表达式,并显示将以哪种摘要样式应用于表达式的结果值(如果表达式有结果值的话)# 期望使用原始输入(请参阅 'help raw-input')
Syntax: type summary info <expr>
type summary list
(lldb)helptype summary list
# 显示当前摘要样式列表
Syntax: type summary list <cmd-options>[<name>]
Command Options Usage:
type summary list [-w <name>][<name>]type summary list [-l <source-language>][<name>]
-l <source-language>( --language <source-language>)# 仅显示指定语言的摘要样式列表
-w <name>( --category-regex <name>)# 仅显示与此类别匹配的摘要样式列表# 此命令接受命令选项(options)和自由格式的参数(free-form arguments)# 如果参数类似于选项说明符(即,参数以 - 或 -- 开头),则必须在命令选项的结尾和参数的开头之间使用 ' -- '
type synthetic
(lldb)helptype synthetic
# 用于操作合成提供程序类型表示的命令
Syntax: type synthetic [<sub-command-options>]
The following subcommands are supported:
add # 为指定的类型添加新的合成提供程序(synthetic provider)clear# 删除所有现有的合成提供程序(synthetic provider)
delete # 删除指定类型的指定合成提供程序(synthetic provider)
info # 此命令执行指定的表达式,并显示将以哪种合成提供程序(synthetic provider)应用于表达式的结果值(如果表达式有结果值的话)# 期望使用原始输入(请参阅 'help raw-input')
list # 显示当前合成提供程序(synthetic provider)列表
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
(lldb)helptype synthetic info
# 此命令执行指定的表达式,并显示将以哪种合成提供程序(synthetic provider)应用于表达式的结果值(如果表达式有结果值的话)# 期望使用原始输入(请参阅 'help raw-input')
Syntax: type synthetic info <expr>
type synthetic list
(lldb)helptype synthetic list
# 显示当前合成提供程序(synthetic provider)列表
Syntax: type synthetic list <cmd-options>[<name>]
Command Options Usage:
type synthetic list [-w <name>][<name>]type synthetic list [-l <source-language>][<name>]
-l <source-language>( --language <source-language>)# 仅显示指定语言的合成提供程序(synthetic provider)列表
-w <name>( --category-regex <name>)# 仅显示与此类别匹配的合成提供程序(synthetic provider)列表# 此命令接受命令选项(options)和自由格式的参数(free-form arguments)# 如果参数类似于选项说明符(即,参数以 - 或 -- 开头),则必须在命令选项的结尾和参数的开头之间使用 ' -- '
version
(lldb)help version
# 用于显示 LLDB 调试器的版本
Syntax: version
watchpoint
(lldb)help watchpoint
# 用于操作内存断点的命令
Syntax: watchpoint <subcommand>[<command-options>]
The following subcommands are supported:
command# 用于添加、删除和列出在命中内存断点时执行的 LLDB 命令的命令
delete # 删除指定的内存断点# 如果没有指定任何内存断点,则将所有内存断点全部删除
disable # 禁用指定的内存断点,而不删除它们# 如果没有指定任何内存断点,则将所有内存断点全部禁用enable# 启用指定的内存断点# 如果没有指定任何内存断点,则将所有内存断点全部启用
ignore # 设置在命中内存断点之前,跳过此内存断点的次数# 如果没有指定任何内存断点,则将作用于所有内存断点
list # 以可配置的详细程度列出部分或全部内存断点
modify # 修改可执行文件中一个或一组内存断点上的选项# 如果没有指定任何内存断点,则修改最后创建的内存断点# 传递一个空的参数可以清除已做的修改set# 用于设置内存断点的命令
For morehelp on any particular subcommand, type'help <command> <subcommand>'.
watchpoint command
(lldb)help watchpoint command# 用于添加、删除和列出在命中内存断点时执行的 LLDB 命令的命令
Syntax: command<sub-command>[<sub-command-options>]<watchpoint-id>
The following subcommands are supported:
add # 将一组 LLDB 命令添加到内存断点中,以便在命中内存断点时执行
delete # 从指定的内存断点中删除已添加的 LLDB 命令
list # 列出在命中指定的内存断点时,要执行的脚本或命令
For morehelp on any particular subcommand, type'help <command> <subcommand>'.