LLDB — оценить и продолжить

В XCode есть функция установки точки останова, затем запуска команды lldb и автоматического продолжения после оценки.

Как настроить ту же функциональность через --source? В руководстве найдена цитата --command, но нет ни примеров, ни ссылок в справке по подкоманде.

By default, the breakpoint command add command takes lldb command line commands. You can also specify this explicitly by passing the "--command" option.

Syntax: command <sub-command> [<sub-command-options>] <breakpoint-id>

person Isaak Osipovich Dunayevsky    schedule 03.01.2017    source источник


Ответы (3)


Я думаю, вы спрашиваете об автоматическом продолжении работы с lldb?

Я использовал команду modify, чтобы добавить автопродолжение.

(lldb) b CCCryptorCreate
Breakpoint 1: where = libcommonCrypto.dylib`CCCryptorCreate, address = 0x000000011047e1b7

(lldb) breakpoint modify --auto-continue true 1
(lldb) br list
Current breakpoints:
1: name = 'CCCryptorCreate', locations = 1, resolved = 1, hit count = 0 Options: enabled auto-continue 
  1.1: where = libcommonCrypto.dylib`CCCryptorCreate, address = 0x000000011047e1b7, resolved, hit count = 0 

затем добавить некоторые команды, которые я использовал.

(lldb) breakpoint command add -s python 1
Enter your Python command(s). Type 'DONE' to end.
    print "Hit this breakpoint!"
    DONE

В справке есть несколько хороших примеров (lldb) help breakpoint command add

person rustyMagnet    schedule 07.06.2018
comment
спасибо, --auto-continue true, чтобы избежать двусмысленности с breakpoint command add 1, где 1 равно <breakpoint-id>. По справке: <boolean> -- A Boolean value: 'true' or 'false' - person Isaak Osipovich Dunayevsky; 11.06.2018
comment
@IsaakOsipovichDunayevsky У меня были проблемы со строкой command add. Когда я указал язык, он работал отлично. Подумал, что вы хотели бы знать! :о) - person rustyMagnet; 07.08.2018
comment
Вы можете найти полезную информацию о lldb в этом видео 2018 года: developer.apple.com/videos /play/wwdc2018/412 - person Isaak Osipovich Dunayevsky; 07.08.2018

Мне не совсем понятно, что вы спрашиваете.

Но если вы хотите поместить команды в текстовый файл где-нибудь, который добавит точку останова и добавит к ней команды, вам нужно что-то вроде:

> cat /tmp/cmds.lldb
break set -F main
break command add
frame var
continue
DONE
> lldb -s /tmp/cmds.lldb myBinary

Или, если вы хотите сделать это в Xcode, просто используйте:

(lldb) command source /tmp/cmds.lldb

как только вы находитесь в сеансе отладки Xcode.

Это основано на одном трюке: команда «breakpoint command add» работает с последней установленной точкой останова, поэтому мне не нужно было указывать номер точки останова.

person Jim Ingham    schedule 09.01.2017
comment
Я хочу установить точку останова на определенной строке. Точки останова могут разрешаться в одном месте, continue будет игнорировать следующие логические точки останова для одного места. - person Isaak Osipovich Dunayevsky; 10.01.2017

help breakpoint command add показывает, что это называется --one-liner, --command должно быть опечатка?

-o <one-line-command> ( --one-liner <one-line-command> )
     Specify a one-line breakpoint command inline.

Вопрос актуален, как автоматически continue при использовании --source

person Isaak Osipovich Dunayevsky    schedule 03.01.2017
comment
Мне не совсем понятно, что вы спрашиваете. Вы хотите поместить команду, которая автоматически продолжается в текстовом файле, где-то, что делает точку останова и добавляет к ней команды, а затем выполните: - person Jim Ingham; 09.01.2017