Vagrant環境でRailsのリモートデバッグ(ブレークポイント使用可能)
基本的には以下の記事の流れに沿ってインストールすれば良いのですが、ある程度インフラに精通していないと完了までに結構はまることになると思いますので、重要なポイントを記録しておきたいと思います。
Visual Studio Codeは最新のものをインストールで良いと思います。
https://qiita.com/syamagami666/items/11f02be59411eec194f6
スペックなど
上記の記事通りにインストールを行ったとしても、OSの種類やバージョンによってはエラーが出る可能性があります。今回は以下の条件で発生したエラーに対応します。
- VirtualBox 6.0.4
- Vagrant 2.2.4
- centos 6.10
- Rails 4.2
エラーの内容
上記の記事の「Connect to Host…」を実行した際に以下のエラーが発生したため、一つずつ解決します。
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found
/usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found
/lib64/libc.so.6: version `GLIBC_2.17' not found
/lib64/libc.so.6: version `GLIBC_2.16' not found
/lib64/libc.so.6: version `GLIBC_2.14' not found
とりあえず、gccのバージョンが古かったので最新にすることにしました。以下のコマンドでインストールします。
# まずはvagrantに入ります。
vagrant ssh
gcc -v
cd /home/vagrant/tmp
curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz
curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/sha512.sum
sha512sum --check sha512.sum
sudo tar xzfv gcc-8.3.0.tar.gz -C /usr/local/src
cd /usr/local/src/gcc-8.3.0/
sudo ./contrib/download_prerequisites
sudo mkdir build
cd build
sudo ../configure --enable-languages=c,c++ --prefix=/usr/local --disable-bootstrap --disable-multilib
sudo make
sudo make install
gcc -v
上記の設定を反映させるために共有ライブラリの参照設定をします。
cd /etc/ld.so.conf.d
# パス "/usr/local/lib64" を以下のファイルに書き込みます。
sudo vi usr_local_lib64.conf
sudo mv /usr/local/lib64/libstdc++.so.6.0.25-gdb.py /usr/local/lib64/back_libstdc++.so.6.0.25-gdb.py
sudo ldconfig
以下のエラーが消えないのでさらにライブラリをインストールします。
/lib64/libc.so.6: version `GLIBC_2.17' not found
/lib64/libc.so.6: version `GLIBC_2.16' not found
/lib64/libc.so.6: version `GLIBC_2.14' not found
バージョン2.17を入れればそれ以下も解決しました。
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm
sudo rpm -Uvh glibc-2.17-55.el6.x86_64.rpm glibc-common-2.17-55.el6.x86_64.rpm glibc-devel-2.17-55.el6.x86_64.rpm glibc-headers-2.17-55.el6.x86_64.rpm
後は初めに紹介した記事通りに進めればリモートデバッグできるはずです。今回はRailsで試しましたが、Laravelなどでも同様に構築できると思いますので次回チャレンジしてみようと思います。
Tips
リモートデバッグした後にVisual Studio Codeのデバッグ停止ボタンを押してから、PCをスリープさせないとプロセスが残って次のリモートデバッグ時にエラーが出ます。その場合は以下のプロセスを探してkillしてみてください。
ps aux
vagrant 12345 XXX 1:23 /opt/rbenv/versions/2.2.2/bin/rdebug-ide
kill 12345
コメントを残す