1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vimでvim-lldbを使えるようにするまでの道のり

Posted at

※特別な理由がないならneovim+lldb.nvimを使ったほうが絶対いいです。
neovim + clang + lldbでC++開発環境構築メモ(自動補完、文法チェック、デバッガフロントエンド)
どうしてもvimを使わないといけない人向けに一応書いときます。


vimでlldbを使いたいな~と思ってプラグインを探してみると、よさげなのがヒットしたので導入しようと思ったら泥沼にはまった。
再導入の時に絶対忘れる気がするので備忘録として導入方法を書いておく。

なお、該当のプラグインはこちら
https://github.com/gilligan/vim-lldb

まずは普通に導入してみる。自分はdeinを使っているので以下の一行を.vimrcに追加した。

.vimrc
call dein#add('gilligan/vim-lldb')

・起動すらしない(g:loaded_lldb = 0)
・has('python') = 0だからダメっぽい
・そういえばUbuntu版vimではpython2は切られていた
・2,3共存させるにはオリジナルビルドを作らないといけないらしい
参考:http://h-miyako.hatenablog.com/entry/2014/11/11/070536
・hg updateで切り替えるとなんかうまくいかなかったので別フォルダへのcheck outを推奨
・pip入れようと思ったらzlibがないといわれる
・zlib1g-dev入れて、Modules/Setupのzlibの行をコメントアウトしてみる
・ビルドしたけど今度はSSLがないらしい
・sslの行もコメントアウト、再ビルドしたらうまくいった
・ビルド完了、起動してみる
・pythonInitで失敗と出る
・import lldbに失敗しているらしい
・lldbというのはLLVM debugger本家のpythonバインディング
・なぜ失敗したかというと、オリジナルビルド版pythonにlldbが入っていなかったから
・python-lldb自体はインスコされているのでPYTHONPATHに追加すればOK
・パスを通して、起動してみるとまたもやエラー
・インタプリタでimport lldbをやってみる
・_lldbがロードできなかったらしい。なんじゃそりゃ
・soのsym linkが壊れているとかなんとか。
参考:http://stackoverflow.com/questions/30869945/how-to-import-lldb-in-a-python-script
・書いてある通りにやってみる、けどまたエラー(undefined PyUnicodeUCS4_AsUTF8String)
・どうやらpythonをucs4対応でビルドしないといけないらしい。やれやれ。
参考:http://stackoverflow.com/questions/33795982/undefined-symbol-pyunicodeucs4-fromstringandsize-with-tensorflow-on-heroku
・今度はsixモジュールがないそうだ。ここまで来るとなんでもできそうな気がしてくる
・正常にインポートされたようだ。vimを起動してみる
・エラーもなく起動。適当に「:Lshow」とか打ってもコマンドなしにはならないので大丈夫そうだ。

やれやれ。

:Ltargetでコンパイル済みファイルを選択。
ブレークポイント設定は仕掛けたい行で:Lbreakpoint。
実際使ってみると、まずrunが遅い。nextもかなりもっさりしている。
これならvimshellとかでlldb動かしたほうが速いような…

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?