lldb команда jump: возобновить вне текущей функции? - PullRequest
0 голосов
/ 17 мая 2018

Команда 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 (игнорируя возможные побочные эффекты)?

1 Ответ

0 голосов
/ 17 мая 2018

jump - это команда-обертка, которая упаковывает некоторые общие варианты использования базового thread jump в компактную форму.Вот что все команды _regex- находятся в lldb.Выполните:

(lldb) help command regex

, если вы хотите больше подробностей об этих командах регулярных выражений, и, конечно,

(lldb) help thread jump

для всего, что вы можете сделать с этой командой.

Оболочка не имеет возможности разрешить переход за пределы текущей функции, потому что это определенно НЕ безопасная операция, поэтому по умолчанию предполагается, что вы допустили ошибку при вводе строки или имени файла ...

Базовая команда имеет опцию --force, которая позволяет вывести компьютер из текущей функции.

...