mac を開発端末にしたいけど xcode をインストールしたくないという場合、xcode を appstore からインストールするのではなく、command line tools のみをインストールする必要がある。
インストールするために xcode-select -- install
を実行する。これをやることで mac 上で homebrew が使えるようになったりする。
私の環境には homebrew 経由でインストールした lldb (/usr/local/opt/llvm/bin/lldb
) があった。最近 neovim のコードを読むことにハマってるので久しぶりにデバッグするしようとしたら次のエラーメッセージが表示された。
$ lldb -p $(pgrep nvim) (lldb) process attach --pid 35912 error: attach failed: unable to locate debugserver
今まで xcode をインストールした状態でデバッグを行ってたので、このケースに初めて遭遇した。debugserver がないとのこと。検索すると command line tools をインストールしてるなら /Library/Developer/CommandLineTools/Library/PrivateFrameworks/LLDB.framework/Versions/A/Resources/debugserver
に存在するという情報を入手した。(確かにあった)
それで今度はこの debugserver を lldb に認識して貰う必要があるが、検索してもなかなかヒットせずかなり困った。
おばあちゃんから「こういうときは lldb のコードから探そうね〜」と教えてもらってたため読んでみると環境変数経由で指定できそうだと分かった。(ソースコードはここ! - GDBRemoteCommunication.cpp#L943)
試しにコマンドライン上で直接指定しながら実行してみた。
$ LLDB_DEBUGSERVER_PATH=/Library/Developer/CommandLineTools/Library/PrivateFrameworks/LLDB.framework/Versions/A/Resources/debugserver lldb -p $(pgrep nvim) (lldb) process attach --pid 35912 Process 35912 stopped * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP frame #0: 0x00007fff63e0c78e libsystem_kernel.dylib`kevent + 10 libsystem_kernel.dylib`kevent: -> 0x7fff63e0c78e <+10>: jae 0x7fff63e0c798 ; <+20> 0x7fff63e0c790 <+12>: movq %rax, %rdi 0x7fff63e0c793 <+15>: jmp 0x7fff63e06457 ; cerror_nocancel 0x7fff63e0c798 <+20>: retq Executable module set to "/Users/codehex/go/src/github.com/neovim/neovim/build/bin/nvim". Architecture set to: x86_64h-apple-macosx.
上手くいったっぽい!あとで自分の .zshrc
に下記を記述しておく。
export LLDB_DEBUGSERVER_PATH=/Library/Developer/CommandLineTools/Library/PrivateFrameworks/LLDB.framework/Versions/A/Resources/debugserver
検索していく過程で ~/.lldbinit
というファイルで lldb の設定をカスタマイズ & 保存していけることが分かった。
どんな感じで書いていけば良いんだろうとドキュメントを探したけど見つからなかった。(man コマンドでもなし)
なのでサンプルを見つけられるように、ここに GitHub 経由でサンプルを見つけられるようにリンクを残しておく。
https://github.com/search?p=1&q=lldbinit&type=Commits
途中で見つけた良さげなページ
後で読みたい