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
中当前函数之外的行(忽略可能的副作用)?
答案 0 :(得分:3)
jump
是一个包装器命令,它将基础thread jump
的一些常见用法打包成一个紧凑的形式。这是lldb中所有_regex-
命令的内容。做:
(lldb) help command regex
如果您想了解有关此正则表达式命令的更多详细信息,当然还有
(lldb) help thread jump
您可以使用该命令执行的所有操作。
包装器没有能力允许跳出当前函数,因为这绝对不是一个安全的操作,所以默认是假设你在输入行或文件名时犯了错误...... / p>
底层命令有一个--force
选项,允许您将pc移出当前函数。