xcode - lldb 命令跳转:在当前函数之外恢复?
问题描述
LLDB 命令jump
让我可以在与它停止的位置不同的位置恢复程序执行,但它似乎仅限于当前函数内的地址:
(lldb) jump CLI.cpp:15
error: CLI.cpp:15 is outside the current function.
我对此很好奇,因为这个限制没有记录在lldb
的帮助中,并且语法jump <file>:<line>
以某种方式表明可以使用任意入口点:
(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'
我知道在不同的帧/堆栈中恢复可能会使程序进入不一致的状态,并产生“奇妙”的副作用。
如何跳转到当前函数之外的行lldb
(忽略可能的副作用)?
解决方案
jump
是一个包装命令,它将底层的一些常见用途打包thread jump
成一个紧凑的形式。这就是_regex-
lldb 中的所有命令。做:
(lldb) help command regex
如果您想了解有关此正则表达式命令的更多详细信息,当然还有
(lldb) help thread jump
对于您可以使用该命令执行的所有操作。
包装器没有允许跳出当前函数的功能,因为这绝对不是一个安全的操作,所以默认是假设你在输入行或文件名时犯了错误......
底层命令确实有一个--force
选项,允许您将 pc 移出当前功能。
推荐阅读
- python - 在 pandas.where 中使用另一个数据框的数据框的条件
- python - 如何从python中的csv文件中获取指定的行?
- swagger-ui - 如何在 Swagger Doc 模型中显示所有字符串示例
- python - 在python中数组的每个元素之后插入几个nan值
- jenkins - 詹金斯没有正确计算 BUILDS_ALL_TIME
- r-exams - 如何在 Moodle 问题中导入外部数据集?
- google-app-engine - 使用高效的缓存策略服务静态资产 - Nuxt.js + GAE
- docker - 即使我能够列出容器,在 Jenkins 工作中也没有发现这样的容器错误
- sql - 需要按分组计数
- android - 如何根据包含而不是 startWith 使颤振 SimpleAutoCompleteField 建议