Debug another selector while single stepping in Xcode using lldb

倾然丶 夕夏残阳落幕 提交于 2019-12-10 09:41:59

问题


I am in my code stopped at a breakpoint at the (lldb) prompt. I can message objects and get their value printed on the console.

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

Whoa! Something is wrong at this point. I would like to be able to step into computePI as a shortcut to figuring out which variables are messed up. However, if I put a breakpoint on that selector and try again I get:

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

It would be a real time saver if I could somehow step into computePI at this point. Is this possible or not? I have been looking at http://lldb.llvm.org and haven't seen anything. Thanks for your help.

UPDATE: Based on Jason Molenda's answer I updated my ~/.lldbinit file with the following handy aliases:

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

That lets me use nup (in place of p) and nupo (in place of po).


回答1:


The p command is really an alias to expr --. One of the options to expr is -u or --unwind-on-error -- in this case a breakpoint is treated as an "error" (which might be considered a bug in and of itself - it's debatable, there are use cases where it would be nonintuitive for this to behave differently.)

Anyway, you should be able to do

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

and it will stop at the breakpoint. The -- here indicates to expr that it should stop doing option parsing and everything after that is an expression to evaluate.



来源:https://stackoverflow.com/questions/13783069/debug-another-selector-while-single-stepping-in-xcode-using-lldb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!