Насколько я знаю, lldb
поддерживает автоматическое выполнение команд при достижении точки останова (аналогично gdb
«s commands
).
Руководство говорит, что это должно работать так:
(lldb) breakpoint command add 1.1
Enter your debugger command(s). Type 'DONE' to end.
> bt
> DONE
Он должен выводить обратную трассировку каждый раз, когда достигается точка останова 1.1. Я пытаюсь сделать то же самое в консоли LLDB в Android Studio 2.1.2 с NDK версии 12b:
(lldb) breakpoint list
...
8: file = '/home/user/src_file.cpp', line = 2683, exact_match = 0, locations = 1, resolved = 1, hit count = 1
8.1: where = libdroid_shared.so`(anonymous namespace)::onDbgThreadResume() + 20 at src_file.cpp:2683, address = 0x0000007f9cad6740, resolved, hit count = 1
(lldb) breakpoint command add 8.1
(lldb) breakpoint command add 8.1
(lldb)
Как видите, отладчик не предлагает мне вводить команды. Когда я нажимаю Enter после breakpoint commmand add
строка выводит только пустую строку, а командной строки нет.
Я пробовал как 32-, так и 64-битные отладчики с разными файлами, точками останова и приложениями, но это не работает.
То же самое с gdb
«s commands
работает отлично.
Мои вопросы:
Я не очень разбираюсь в Android Studio, но похоже, что это ошибка в Android Studio или уровень эмуляции lldb «MI» в обработке входных обратных вызовов lldb (в данном случае тот, который запрашивает фактические команды).
Если это то, что есть, вы можете обойти это, поместив свои команды в файл, а затем используя опцию ввода «одна строка», например:
(lldb) br com add -o "com source /tmp/lldb.cmds"
Других решений пока нет …