LLDBのcommand regexを使うと、zshのanonymous functionのaliasみたいな感じで、
引数に置換かけながらLLDBコマンドを実行するaliasが作れます。
これを利用することで、簡単なコマンドならば、Pythonスクリプトを用意する手間が省けます。
やりかた
構文はシンプルで、
command regex <cmd-name> [s/<regex>/<subst>/ ...]
で、置換パターンはsedのようにs///で書けば問題ないです。(複数可)
これを.lldbinitに記載しておけば、毎回LLDBが立ち上がるたびに、コマンドがセットされます。
例
一例として、XcodeのunsafeBitCast(:to)のaliasを紹介します。
command regex cast 's/(.+) (.+)/expr -l swift -- let $casted = unsafeBitCast(%1, to: %2.self)/'
一般にある置換のように、()で囲んだ部分は%1, %2...で利用できます。
この場合、第1引数のインスタンスやアドレスを、第2引数のタイプにキャストして、$castedに格納します。
上の一行を、~/.lldbinitなどに記載しておけば、castというコマンドが登録されます。
(lldb) cast view.subviews[0] UIButton (lldb) po $casted.frame ▿ (134.5, 305.0, 106.0, 57.0) ▿ origin : (134.5, 305.0) - x : 134.5 - y : 305.0 ▿ size : (106.0, 57.0) - width : 106.0 - height : 57.0
この書き方の場合、letを利用していて書き換えが効かないため、何度もキャストしたい場合は別途工夫がいるかも知れません。