lldb命令跳转:在当前函数之外恢复?

时间:2018-05-17 11:58:58

标签: xcode lldb

LLDB命令jump让我可以在与停止位置不同的位置恢复程序执行,但它似乎仅限于当前函数内的地址:

(lldb) jump CLI.cpp:15
error: CLI.cpp:15 is outside the current function.

我对此感到好奇,因为lldb的帮助中未记录此限制,并且语法jump <file>:<line>以某种方式表明可以使用任意入口点:< / p>

(lldb) help jump
     ('_regexp-jump')  Set the program counter to a new address.  Expects 'raw'
     input (see 'help raw-input'.)

Syntax: 
_regexp-jump <line>
_regexp-jump +<line-offset> | -<line-offset>
_regexp-jump <file>:<line>
_regexp-jump *<addr>

'jump' is an abbreviation for '_regexp-jump'

我知道在不同的帧/堆栈中恢复可能会使程序进入一个不一致的状态,并且#34;精彩&#34;副作用。

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

1 个答案:

答案 0 :(得分:3)

jump是一个包装器命令,它将基础thread jump的一些常见用法打包成一个紧凑的形式。这是lldb中所有_regex-命令的内容。做:

(lldb) help command regex

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

(lldb) help thread jump

您可以使用该命令执行的所有操作。

包装器没有能力允许跳出当前函数,因为这绝对不是一个安全的操作,所以默认是假设你在输入行或文件名时犯了错误...... / p>

底层命令有一个--force选项,允许您将pc移出当前函数。