lldb Xcode, "p" 和 "e" 的区别

lldb Xcode, difference between "p" and "e"

我看过关于 ppo 的解释。但似乎无法注意到 pe 之间的区别(如果我是正确的话,expressionexpression 的缩写)。 他们甚至在 lldb 中有相同的帮助信息:

计算当前线程上的表达式。使用 LLDB 的默认格式显示任何返回值。

据我所知,唯一的区别是e = expression, p = expression --.

是啊,有什么区别?什么时候使用一个比另一个更好? 谢谢!

基本的lldb命令是expr或简称e

expr 命令采用控制结果格式和表达式如何 运行 的选项(例如,表达式是否在 运行ning 时忽略断点)。然后它将表达式带到 运行.

需要一些方法来消除选项中表达式的歧义。例如,如果表达式预递减 format 变量 (--format),则该字符串同样可以指定 --format 选项。 lldb 遵循 Unix 命令行解决方案,其中 -- 表示:选项结束,实际参数开始。所以如果你做的是前者,你会说:

(lldb) expr -- --format

这就是 p 存在的原因。由于它是 expr -- 的别名,因此变为:

(lldb) p --format
当您知道不需要提供任何选项时,

p 是 运行 expr 的便捷方式。无论您键入什么,都将成为您 运行ning 的表达方式。如果你想提供选项,你只需要使用expr

关于lldb命令行的一般操作在这里:

https://lldb.llvm.org/use/tutorial.html#id1