Xcode lldb命令跳转:是否在当前函数外恢复?

Xcode lldb命令跳转:是否在当前函数外恢复?,xcode,lldb,Xcode,Lldb,LLDB commandjump允许我在与停止位置不同的位置恢复程序执行,但它似乎仅限于当前函数中的地址: (lldb) jump CLI.cpp:15 error: CLI.cpp:15 is outside the current function. 我对此很好奇,因为在lldb的帮助中没有记录此限制,并且语法jump:以某种方式表示可以使用任意入口点: (lldb)帮助跳转 (“U regexp-jump”)将程序计数器设置为新地址。期望“生的” 输入(请参阅“帮助原始输入”。) 语法:

LLDB command
jump
允许我在与停止位置不同的位置恢复程序执行,但它似乎仅限于当前函数中的地址:

(lldb) jump CLI.cpp:15
error: CLI.cpp:15 is outside the current function.
我对此很好奇,因为在
lldb
的帮助中没有记录此限制,并且语法
jump:
以某种方式表示可以使用任意入口点:

(lldb)帮助跳转
(“U regexp-jump”)将程序计数器设置为新地址。期望“生的”
输入(请参阅“帮助原始输入”。)
语法:
_regexp跳转
_regexp跳转+|-
_regexp跳转:
_regexp跳转*
“jump”是“\u regexp-jump”的缩写
我知道在不同的帧/堆栈中恢复可能会使程序进入不一致的状态,并产生“奇妙”的副作用


如何跳转到
lldb
中当前函数之外的行(忽略可能的副作用)

jump
是一个包装器命令,它将底层
线程跳转的一些常见用法打包成一个紧凑的形式。这就是lldb中所有的
\u regex-
命令。做:

(lldb) help command regex
如果您想了解有关此正则表达式命令的更多详细信息,当然还有

(lldb) help thread jump
你能用这个命令做的一切

包装器没有允许跳出当前函数的功能,因为这绝对不是一个安全的操作,因此默认情况下,假定您在键入行或文件名时出错


基本命令确实有一个
--force
选项,允许您将电脑移出当前功能。

非常感谢<代码>线程跳转-r-l 15-f CLI.cpp
然后按continue完成任务。这样,我就可以重新输入要分析的代码,再次触发断点,而无需点击应用程序或启动整个程序再次到达关注点。当然,正如预期的那样,该应用程序随后无法正常运行,但它只是用于调试…请注意,在lldb中调试随机函数的另一种方法是在函数上设置断点,然后使用
expr-i 0--myfunc()
手动在lldb中调用它,然后您可以在函数中四处走动,查看任何内容,完成后,键入
continue
以完成函数调用并查看返回结果,或者运行
thread return-x
以终止表达式计算并返回到上一个程序状态。唯一的危害就是你调用的函数有什么副作用。
(lldb) help thread jump