2016-10-14 3 views
0

Я хочу написать этот макрос в ~/.lldbinit:Как написать многострочный макрос в ~/.lldbinit?

command regex pxml 's/(.+)/p xmlElemDump(stdout, %1, xmlDocGetRootElement(%1))/' -h "Dump the contents of an XML tree." 

Но это слишком долго, и я хочу, чтобы разбить его на нескольких линиях, как это:

command regex pxml 
    's/(.+)/p xmlElemDump(stdout, %1, xmlDocGetRootElement(%1))/' 
    -h "Dump the contents of an XML tree." 

или

command regex pxml\ 
    's/(.+)/p xmlElemDump(stdout, %1, xmlDocGetRootElement(%1))/'\ 
    -h "Dump the contents of an XML tree." 

К сожалению, оба они вызывают эту ошибку:

Enter one of more sed substitution commands in the form: 's/<regex>/<subst>/'. 
Terminate the substitution list with an empty line. 

Как я могу разбить макрос на несколько строк?

ответ

1

lldb не имеет символа продолжения. Это было бы сложно в некоторых командах свободной формы, особенно в команде «print». Но было бы полезно в этих случаях. Не стесняйтесь сообщать об ошибке с помощью lldb/llvm tracker: https://llvm.org/bugs/.

В большинстве случаев, когда команда имеет несколько параметров, затем принимает набор входов, команда может вводить небольшой мини-редактор для набора входов. Это справедливо для command regex. Таким образом, в командной строке lldb, вы увидите:

(lldb) command regex whatever -h "some help" -s "some syntax" 
Enter one of more sed substitution commands in the form: 's/<regex>/<subst>/'. 
Terminate the substitution list with an empty line. 
> s/First/Replacement/ 
> s/Second/Replacement/ 
> 

command source функция, которая также читает .lldbinit работает путем подачи командного файла в виде потока к переводчику. Так что вам нужно импровизировать, что делает командной строки:

command regex whatever -h "some help" -s "some syntax" 
s/First/Replacement/ 
s/Second/Replacement/ 

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

+0

Обратите внимание, что если ваша команда regex подстановки начинает очень долго, возможно, пришло время подумать о том, чтобы записать ее как команду Python. Инструкции для этого приведены здесь: http://lldb.llvm.org/python-reference.html. –

+0

Спасибо за ответ. Но записывая макрос в этом мини-редакторе и добавляя пустую строку после последней подстановки в '~/.lldbinit', и используя ее для интерпретации при запуске lldb или поиске его с помощью' command source ~/.lldbinit' будет производить эта ошибка снова. Кажется, что lldb не распознает пустые строки в поиске в качестве конца ввода. –

+1

Когда я это делаю, я получаю этот текст о «Введите один или несколько ...», но команда regex на самом деле была создана и работает так, как ожидалось. Вы проверяли, что команда работала, или предположили из вывода, что это не так? –

Смежные вопросы