4

我的代码在 (lldb) 提示符处的断点处停止。我可以向对象发送消息并将它们的值打印在控制台上。

(lldb) p [self computePI]
(float) $1 = 3.0

哇!在这一点上有些不对劲。我希望能够进入 computePI 作为找出哪些变量被搞砸的捷径。但是,如果我在该选择器上放置一个断点并重试,我会得到:

(lldb) p [self computePI]
error: Execution was interrupted, reason: breakpoint 5.1.
The process has been returned to the state before execution.

如果此时我能以某种方式进入computePI,那将是一个真正的节省时间。这可能吗?我一直在查看http://lldb.llvm.org并没有看到任何东西。谢谢你的帮助。

更新: 根据 Jason Molenda 的回答,我使用以下方便的别名更新了我的 ~/.lldbinit 文件:

command alias nup expr -u 0 -- 
command alias nupo expr -u 0 -o --

这让我可以使用 nup(代替 p)和 nupo(代替 po)。

4

1 回答 1

6

p命令实际上是expr --. 选项之一expr-u--unwind-on-error- 在这种情况下,断点被视为“错误”(它本身可能被认为是一个错误 - 这是有争议的,在某些用例中,它的行为不同是不直观的.)

无论如何,你应该能够做到

(lldb) expr -u false -- [self computePI]

它将在断点处停止。这里--表示expr它应该停止进行选项解析,之后的所有内容都是要评估的表达式。

于 2012-12-09T01:29:28.030 回答