2016-10-14 6 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バグトラッカー: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/ 
> 

もインタプリタにストリームとしてコマンドファイルを供給することによって.lldbinitの作品を読みcommand source機能。だから、コマンドラインが何モックアップする必要があります。

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

これを行うと、「1つ以上を入力してください」というテキストが表示されますが、regexコマンドは実際に作成され、期待どおりに動作します。コマンドが機能していることを確認しましたか? –

関連する問題